使用特殊字符和驼峰套管搜索时抛出Solr错误

时间:2018-03-23 10:24:23

标签: java solr lucene hybris

我在搜索TEXT字段时遇到问题,这是我的例子:

我的产品名称 DRC分类(3xEZ,2xGDE,3xLT,2xRI,1xRC,3xRSV)在进行完整索引时,solr会抛出如下错误,但当我删除括号内的字符时包括括号,完整索引是成功的。

  

WARN [full-frwIndex-cronJob :: de.hybris.platform.servicelayer.internal.jalo.ServicelayerJob](full-frwIndex-cronJob)[SolrIndexerJob]索引器调用期间出错:frwIndex   de.hybris.platform.solrfacetsearch.indexer.exceptions.IndexerException:de.hybris.platform.solrfacetsearch.indexer.exceptions.IndexerException: Indexer worker失败。已达到最大重试次数           at de.hybris.platform.solrfacetsearch.indexer.strategies.impl.DefaultIndexerStrategy.doExecute(DefaultIndexerStrategy.java:97)〜[solrfacetsearchserver.jar:?]           at de.hybris.platform.solrfacetsearch.indexer.strategies.impl.AbstractIndexerStrategy.doExecute(AbstractIndexerStrategy.java:165)〜[solrfacetsearchserver.jar:?]           at de.hybris.platform.solrfacetsearch.indexer.strategies.impl.AbstractIndexerStrategy.execute(AbstractIndexerStrategy.java:124)〜[solrfacetsearchserver.jar:?]           at de.hybris.platform.solrfacetsearch.indexer.impl.DefaultIndexerService.performFullIndex(DefaultIndexerService.java:68)〜[solrfacetsearchserver.jar:?]           at de.hybris.platform.solrfacetsearch.indexer.cron.SolrIndexerJob.indexItems(SolrIndexerJob.java:78)〜[solrfacetsearchserver.jar:?]           at de.hybris.platform.solrfacetsearch.indexer.cron.SolrIndexerJob.performIndexingJob(SolrIndexerJob.java:57)[solrfacetsearchserver.jar:?]           at de.hybris.platform.solrfacetsearch.indexer.cron.AbstractIndexerJob.perform(AbstractIndexerJob.java:40)[solrfacetsearchserver.jar:?]           at de.hybris.platform.servicelayer.internal.jalo.ServicelayerJob.performCronJob(ServicelayerJob.java:38)[processingserver.jar:?]           在de.hybris.platform.cronjob.jalo.Job.execute(Job.java:1390)[processingserver.jar:?]           at de.hybris.platform.cronjob.jalo.Job.performImpl(Job.java:814)[processingserver.jar:?]           在de.hybris.platform.cronjob.jalo.Job.access $ 1(Job.java:767)[processingserver.jar:?]           at de.hybris.platform.cronjob.jalo.Job $ JobRunable.run(Job.java:686)[processingserver.jar:?]           at de.hybris.platform.util.threadpool.PoolableThread.internalRun(PoolableThread.java:208)[coreserver.jar:?]           at de.hybris.platform.core.threadregistry.RegistrableThread.run(RegistrableThread.java:135)[coreserver.jar:?]   引起:de.hybris.platform.solrfacetsearch.indexer.exceptions.IndexerException:Indexer worker失败。已达到最大重试次数           at de.hybris.platform.solrfacetsearch.indexer.strategies.impl.DefaultIndexerStrategy.runWorkers(DefaultIndexerStrategy.java:154)〜[solrfacetsearchserver.jar:?]           at de.hybris.platform.solrfacetsearch.indexer.strategies.impl.DefaultIndexerStrategy.doExecute(DefaultIndexerStrategy.java:93)〜[solrfacetsearchserver.jar:?]           ......还有13个   引起:java.util.concurrent.ExecutionException:org.apache.solr.client.solrj.impl.HttpSolrClient $ RemoteSolrException:来自https://localhost:8983/solr的服务器的错误:异常编写文档ID frwProductCatalog / Online / 171377- 15417   25指数;可能的分析错误:startOffset必须是非负的,并且endOffset必须是> = startOffset,并且offsets不能倒退startOffset = 45,endOffset = 49,lastStartOffset = 46 for field' allFields_text_en'           在java.util.concurrent.FutureTask.report(FutureTask.java:122)〜[?:1.8.0_144]           在java.util.concurrent.FutureTask.get(FutureTask.java:192)〜[?:1.8.0_144]           at de.hybris.platform.solrfacetsearch.indexer.strategies.impl.DefaultIndexerStrategy.runWorkers(DefaultIndexerStrategy.java:141)〜[solrfacetsearchserver.jar:?]           at de.hybris.platform.solrfacetsearch.indexer.strategies.impl.DefaultIndexerStrategy.doExecute(DefaultIndexerStrategy.java:93)〜[solrfacetsearchserver.jar:?]           ......还有13个   引起:org.apache.solr.client.solrj.impl.HttpSolrClient $ RemoteSolrException:来自https://localhost:8983/solr的服务器的错误:将文档id frwProductCatalog / Online / 171377-1541725写入索引的异常;可能的分析错误:     startOffset必须为非负数,endOffset必须为> = startOffset,并且offsets不得向后反向startOffset = 45,endOffset = 49,lastStartOffset = 46 for field' allFields_text_en'           在org.apache.solr.client.solrj.impl.HttpSolrClient.executeMethod(HttpSolrClient.java:627)〜[solr-solrj-7.0.0.jar:7.0.0 3ba304b29825a94249c5145b3f5061e87b87d8f8 - anshum - 2017-09-08 13:21 :09]           在org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:253)〜[solr-solrj-7.0.0.jar:7.0.0 3ba304b29825a94249c5145b3f5061e87b87d8f8 - anshum - 2017-09-08 13:21 :09]           在org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:242)〜[solr-solrj-7.0.0.jar:7.0.0 3ba304b29825a94249c5145b3f5061e87b87d8f8 - anshum - 2017-09-08 13:21 :09]           at de.hybris.platform.solrfacetsearch.solr.impl.SolrStandaloneSearchProvider $ ClusterSolrClient.request(SolrStandaloneSearchProvider.java:511)~ [solrfacetsearchserver.jar:?]           at de.hybris.platform.solrfacetsearch.solr.impl.CachedSolrClient.request(CachedSolrClient.java:72)〜[solrfacetsearchserver.jar:?]           在org.apache.solr.client.solrj.SolrRequest.process(SolrRequest.java:178)〜[solr-solrj-7.0.0.jar:7.0.0 3ba304b29825a94249c5145b3f5061e87b87d8f8 - anshum - 2017-09-08 13:21:09 ]           在org.apache.solr.client.solrj.SolrClient.add(SolrClient.java:106)〜[solr-solrj-7.0.0.jar:7.0.0 3ba304b29825a94249c5145b3f5061e87b87d8f8 - anshum - 2017-09-08 13:21:09 ]           在org.apache.solr.client.solrj.SolrClient.add(SolrClient.java:71)〜[solr-solrj-7.0.0.jar:7.0.0 3ba304b29825a94249c5145b3f5061e87b87d8f8 - anshum - 2017-09-08 13:21:09 ]           at de.hybris.platform.solrfacetsearch.indexer.impl.SolrServerExporter.exportToUpdateIndex(SolrServerExporter.java:89)〜[solrfacetsearchserver.jar:?]           at de.hybris.platform.solrfacetsearch.indexer.impl.DefaultIndexer.indexItems(DefaultIndexer.java:130)〜[solrfacetsearchserver.jar:?]           at de.hybris.platform.solrfacetsearch.indexer.strategies.impl.DefaultIndexerBatchStrategy.executeIndexerOperation(DefaultIndexerBatchStrategy.java:253)〜[solrfacetsearchserver.jar:?]           at de.hybris.platform.solrfacetsearch.indexer.strategies.impl.DefaultIndexerBatchStrategy.execute(DefaultIndexerBatchStrategy.java:218)~ [solrfacetsearchserver.jar:?]           at de.hybris.platform.solrfacetsearch.indexer.workers.impl.DefaultIndexerWorker.doRun(DefaultIndexerWorker.java:202)〜[solrfacetsearchserver.jar:?]           at de.hybris.platform.solrfacetsearch.indexer.workers.impl.DefaultIndexerWorker.run(DefaultIndexerWorker.java:158)〜[solrfacetsearchserver.jar:?]           在java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:511)〜[?:1.8.0_144]           在java.util.concurrent.FutureTask.run(FutureTask.java:266)〜[?:1.8.0_144]           在java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:511)〜[?:1.8.0_144]           在java.util.concurrent.FutureTask.run(FutureTask.java:266)〜[?:1.8.0_144]           在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)〜[?:1.8.0_144]           在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:624)〜[?:1.8.0_144]           在java.lang.Thread.run(Thread.java:748)〜[?:1.8.0_144]

我的schema.xml texttext_gentext_en如下:

    <fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
        <analyzer>
            <tokenizer class="solr.WhitespaceTokenizerFactory"/>
            <filter class="solr.SynonymFilterFactory" ignoreCase="true" synonyms="synonyms.txt"/>
            <filter class="solr.ManagedSynonymFilterFactory" managed="en" />
            <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt" />
            <filter class="solr.ManagedStopFilterFactory" managed="en" />
            <filter class="solr.WordDelimiterFilterFactory"  preserveOriginal="1"
                generateWordParts="1" generateNumberParts="1" catenateWords="1"
                catenateNumbers="1" catenateAll="0" splitOnCaseChange="0" />
            <filter class="solr.LowerCaseFilterFactory" />
            <filter class="solr.ASCIIFoldingFilterFactory" />
            <filter class="solr.SnowballPorterFilterFactory" language="English" />
        </analyzer>
    </fieldType>

    <fieldType name="text" class="solr.TextField" positionIncrementGap="100">
        <analyzer>
            <tokenizer class="solr.WhitespaceTokenizerFactory"/>
            <filter class="solr.SynonymFilterFactory" ignoreCase="true" synonyms="synonyms.txt"/>
            <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
            <filter class="solr.WordDelimiterFilterFactory"
                generateWordParts="1" generateNumberParts="1" catenateWords="1"
                catenateNumbers="1" catenateAll="0" splitOnCaseChange="0" preserveOriginal="1"/>
            <filter class="solr.LowerCaseFilterFactory" />
        </analyzer>
    </fieldType>

    <!--
        A general unstemmed text field - good if one does not know the
        language of the field
    -->
    <fieldType name="textgen" class="solr.TextField" positionIncrementGap="100">
        <analyzer>
            <tokenizer class="solr.StandardTokenizerFactory" />
            <filter class="solr.SynonymFilterFactory" ignoreCase="true" synonyms="synonyms.txt"/>
            <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
            <filter class="solr.WordDelimiterFilterFactory"
                generateWordParts="1" generateNumberParts="1" catenateWords="1"
                catenateNumbers="1" catenateAll="0" splitOnCaseChange="0" preserveOriginal="1"/>
            <filter class="solr.LowerCaseFilterFactory" />
        </analyzer>
    </fieldType>

你能告诉我我错过了什么吗?

0 个答案:

没有答案