Search in sources :

Example 1 with CoreDescriptorDecorator

use of org.apache.solr.core.CoreDescriptorDecorator in project SearchServices by Alfresco.

the class SolrCoreLoadRegistration method registerForCore.

/**
 * Registers with the admin handler the information server and the trackers.
 */
public static void registerForCore(AlfrescoCoreAdminHandler adminHandler, CoreContainer coreContainer, SolrCore core, String coreName) {
    TrackerRegistry trackerRegistry = adminHandler.getTrackerRegistry();
    Properties props = new CoreDescriptorDecorator(core.getCoreDescriptor()).getProperties();
    if (Boolean.parseBoolean(props.getProperty("enable.alfresco.tracking", "false"))) {
        SolrTrackerScheduler scheduler = adminHandler.getScheduler();
        SolrResourceLoader loader = core.getLatestSchema().getResourceLoader();
        SolrKeyResourceLoader keyResourceLoader = new SolrKeyResourceLoader(loader);
        if (trackerRegistry.hasTrackersForCore(coreName)) {
            log.info("Trackers for " + coreName + " is already registered, shutting them down.");
            shutdownTrackers(coreName, trackerRegistry.getTrackersForCore(coreName), scheduler);
            trackerRegistry.removeTrackersForCore(coreName);
            adminHandler.getInformationServers().remove(coreName);
        }
        SOLRAPIClientFactory clientFactory = new SOLRAPIClientFactory();
        SOLRAPIClient repositoryClient = clientFactory.getSOLRAPIClient(props, keyResourceLoader, AlfrescoSolrDataModel.getInstance().getDictionaryService(CMISStrictDictionaryService.DEFAULT), AlfrescoSolrDataModel.getInstance().getNamespaceDAO());
        // Start content store
        SolrContentStore contentStore = new SolrContentStore(coreContainer.getSolrHome());
        SolrInformationServer srv = new SolrInformationServer(adminHandler, core, repositoryClient, contentStore);
        props.putAll(srv.getProps());
        adminHandler.getInformationServers().put(coreName, srv);
        log.info("Starting to track " + coreName);
        ModelTracker mTracker = null;
        // Prevents other threads from registering the ModelTracker at the same time
        synchronized (trackerRegistry) {
            mTracker = trackerRegistry.getModelTracker();
            if (mTracker == null) {
                log.debug("Creating ModelTracker when registering trackers for core " + coreName);
                mTracker = new ModelTracker(coreContainer.getSolrHome(), props, repositoryClient, coreName, srv);
                trackerRegistry.setModelTracker(mTracker);
                log.info("Ensuring first model sync.");
                mTracker.ensureFirstModelSync();
                log.info("Done ensuring first model sync.");
                // Scheduling the ModelTracker.
                scheduler.schedule(mTracker, coreName, props);
            }
        }
        List<Tracker> trackers = createTrackers(coreName, trackerRegistry, props, scheduler, repositoryClient, srv);
        CommitTracker commitTracker = new CommitTracker(props, repositoryClient, coreName, srv, trackers);
        trackerRegistry.register(coreName, commitTracker);
        scheduler.schedule(commitTracker, coreName, props);
        log.info("The Trackers are now scheduled to run");
        // Add the commitTracker to the list of scheduled trackers that can be shutdown
        trackers.add(commitTracker);
        core.addCloseHook(new CloseHook() {

            @Override
            public void preClose(SolrCore core) {
                log.info("Shutting down " + core.getName());
                SolrCoreLoadRegistration.shutdownTrackers(core.getName(), trackers, scheduler);
            }

            @Override
            public void postClose(SolrCore core) {
            }
        });
    }
}
Also used : ContentTracker(org.alfresco.solr.tracker.ContentTracker) Tracker(org.alfresco.solr.tracker.Tracker) MetadataTracker(org.alfresco.solr.tracker.MetadataTracker) CommitTracker(org.alfresco.solr.tracker.CommitTracker) CascadeTracker(org.alfresco.solr.tracker.CascadeTracker) AclTracker(org.alfresco.solr.tracker.AclTracker) ModelTracker(org.alfresco.solr.tracker.ModelTracker) SolrContentStore(org.alfresco.solr.content.SolrContentStore) SolrCore(org.apache.solr.core.SolrCore) CommitTracker(org.alfresco.solr.tracker.CommitTracker) Properties(java.util.Properties) TrackerRegistry(org.alfresco.solr.tracker.TrackerRegistry) SolrInformationServer(org.alfresco.solr.SolrInformationServer) ModelTracker(org.alfresco.solr.tracker.ModelTracker) CoreDescriptorDecorator(org.apache.solr.core.CoreDescriptorDecorator) SolrResourceLoader(org.apache.solr.core.SolrResourceLoader) CloseHook(org.apache.solr.core.CloseHook) SOLRAPIClientFactory(org.alfresco.solr.client.SOLRAPIClientFactory) SOLRAPIClient(org.alfresco.solr.client.SOLRAPIClient) SolrTrackerScheduler(org.alfresco.solr.tracker.SolrTrackerScheduler) SolrKeyResourceLoader(org.alfresco.solr.SolrKeyResourceLoader)

Example 2 with CoreDescriptorDecorator

use of org.apache.solr.core.CoreDescriptorDecorator in project SearchServices by Alfresco.

the class AlfrescoSolrDataModel method getLuceneQueryParser.

public Solr4QueryParser getLuceneQueryParser(SearchParameters searchParameters, SolrQueryRequest req, FTSQueryParser.RerankPhase rerankPhase) {
    Analyzer analyzer = req.getSchema().getQueryAnalyzer();
    Solr4QueryParser parser = new Solr4QueryParser(req, Version.LUCENE_5_5_0, searchParameters.getDefaultFieldName(), analyzer, rerankPhase);
    parser.setNamespacePrefixResolver(namespaceDAO);
    parser.setDictionaryService(getDictionaryService(CMISStrictDictionaryService.DEFAULT));
    parser.setTenantService(tenantService);
    parser.setSearchParameters(searchParameters);
    parser.setAllowLeadingWildcard(true);
    Properties props = new CoreDescriptorDecorator(req.getCore().getCoreDescriptor()).getProperties();
    int topTermSpanRewriteLimit = Integer.parseInt(props.getProperty("alfresco.topTermSpanRewriteLimit", "1000"));
    parser.setTopTermSpanRewriteLimit(topTermSpanRewriteLimit);
    return parser;
}
Also used : CoreDescriptorDecorator(org.apache.solr.core.CoreDescriptorDecorator) Solr4QueryParser(org.alfresco.solr.query.Solr4QueryParser) Analyzer(org.apache.lucene.analysis.Analyzer) Properties(java.util.Properties) Constraint(org.alfresco.repo.search.impl.querymodel.Constraint)

Aggregations

Properties (java.util.Properties)2 CoreDescriptorDecorator (org.apache.solr.core.CoreDescriptorDecorator)2 Constraint (org.alfresco.repo.search.impl.querymodel.Constraint)1 SolrInformationServer (org.alfresco.solr.SolrInformationServer)1 SolrKeyResourceLoader (org.alfresco.solr.SolrKeyResourceLoader)1 SOLRAPIClient (org.alfresco.solr.client.SOLRAPIClient)1 SOLRAPIClientFactory (org.alfresco.solr.client.SOLRAPIClientFactory)1 SolrContentStore (org.alfresco.solr.content.SolrContentStore)1 Solr4QueryParser (org.alfresco.solr.query.Solr4QueryParser)1 AclTracker (org.alfresco.solr.tracker.AclTracker)1 CascadeTracker (org.alfresco.solr.tracker.CascadeTracker)1 CommitTracker (org.alfresco.solr.tracker.CommitTracker)1 ContentTracker (org.alfresco.solr.tracker.ContentTracker)1 MetadataTracker (org.alfresco.solr.tracker.MetadataTracker)1 ModelTracker (org.alfresco.solr.tracker.ModelTracker)1 SolrTrackerScheduler (org.alfresco.solr.tracker.SolrTrackerScheduler)1 Tracker (org.alfresco.solr.tracker.Tracker)1 TrackerRegistry (org.alfresco.solr.tracker.TrackerRegistry)1 Analyzer (org.apache.lucene.analysis.Analyzer)1 CloseHook (org.apache.solr.core.CloseHook)1