2

I have set up SI4T with a custom SearchIndexer. The publishing now fails with this message Could not load SearchIndexer. Check your configuration.. What does this really mean, which configuration and what could be wrong in the config?

2015-04-24 13:07:45,042 INFO  JPASearchDAOFactory - Start committing transaction: tcm:0-1113-66560
2015-04-24 13:07:45,058 INFO  SearchIndexProcessor - Triggering Indexing for transaction: tcm:0-1113-66560
2015-04-24 13:07:45,058 ERROR JPASearchDAOFactory - Could not load SearchIndexer. Check your configuration.
2015-04-24 13:07:45,058 ERROR JPASearchDAOFactory - com.tridion.storage.si4t.SearchIndexProcessor - 262 : triggerIndexing
    com.tridion.storage.si4t.JPASearchDAOFactory - 189 : commitTransaction
    com.tridion.storage.StorageManagerFactory - 354 : commitTransaction
    com.tridion.deployer.phases.AbstractStorageStep - 32 : commitTransaction
    com.tridion.deployer.phases.CommitPhase - 77 : execute
    com.tridion.deployer.phases.DeployPipelineExecutor - 198 : runMainExecutePhase
    com.tridion.deployer.phases.DeployPipelineExecutor - 100 : doExecute
    com.tridion.deployer.phases.DeployPipelineExecutor - 64 : execute
    com.tridion.deployer.TransactionManager - 82 : handleDeployPackage
    com.tridion.deployer.queue.QueueLocationHandler$1 - 180 : run
    java.util.concurrent.Executors$RunnableAdapter - -1 : call
    java.util.concurrent.FutureTask - -1 : run
    java.util.concurrent.ThreadPoolExecutor - -1 : runWorker
    java.util.concurrent.ThreadPoolExecutor$Worker - -1 : run
    java.lang.Thread - -1 : run
1

The message Could not load SearchIndexer. Check your configuration. is thrown by the SI4T core (as in opposed to the Solr or other SearchIndexer implementation).

It means that there is no SearchIndexer configured in the Tridion storage configuration in cd_storage_conf.xml in the Content Delivery deployer application. So, SI4T is configured but on one of the <Storage> configurations the SI4T <Indexer> configuration is not set.

Check the cd_storage_conf.xml and check all the <Storage> nodes. You need an <Indexer> config in every <Storage> node (think of both database and filesystem storage) like so. See the SI4T Solr Configuration 101 for more info.

<Storage 
    Type="persistence" Id="defaultdb" dialect="MSSQL" 
    Class="com.tridion.storage.si4t.JPASearchDAOFactory">
    <Pool Type="jdbc" Size="5" MonitorInterval="60" IdleTimeout="120" CheckoutTimeout="120" />
    <DataSource Class="com.microsoft.sqlserver.jdbc.SQLServerDataSource">
        <Property Name="serverName" Value="[SERVERNAME]" />
        <Property Name="portNumber" Value="[DBPORT]" />
        <Property Name="databaseName" Value="[DBNAME]" />
        <Property Name="user" Value="[DBBROKERUSERNAME]" />
        <Property Name="password" Value="[DBBROKERPASSWORD]" />
    </DataSource>
    <Indexer 
        Class="org.si4t.solr.SolrIndexer" 
        DefaultCoreUrl="http://localhost:8080/solr/staging" 
        Mode="http" 
        DocExtensions="pdf,docx,doc,xls,xlsx,pptx,ppt">
        <Urls>
            <!-- SI4T: 
                    The Value attribute is the complete URL to a Solr Core
                    The Id attribute denotes a unique Tridion Publication Id
            -->
            <Url Value="http://localhost:8080/solr/staging_pub5" Id="5" />
            <Url Value="http://localhost:8080/solr/staging" Id="8" />
            <Url Value="http://localhost:8080/solr/staging" Id="12" />
        </Urls>
    </Indexer>
</Storage>

<Storage Type="filesystem" 
        Class="com.tridion.storage.si4t.FSSearchDAOFactory" 
        Id="defaultFile" defaultFilesystem="false" defaultStorage="false">
    <Root Path="[STORAGE_PATH]" />
    <Indexer 
        Class="org.si4t.solr.SolrIndexer" 
        Mode="http" 
        DefaultCoreUrl="http://localhost:8080/solr/staging" 
        DocExtensions="pdf,docx,doc,xls,xlsx,pptx,ppt">
        <Urls>
            <!-- <Url Value="http://localhost:8080/solr/staging" Id="5" />-->
            <Url Value="http://localhost:8080/solr/staging" Id="8" />
            <Url Value="http://localhost:8080/solr/staging" Id="12" />
        </Urls>
    </Indexer>
</Storage>

In our case I did put an Indexer configuration on the database storage, but I forgot to update filesystem storage.

Bart mentioned that you can also fix this error by omitting certain storage types in SearchDAOBundle.xml if you do not need to index everything.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.