0

I am seeing below exception when facet.method= enum is used. Earlier we got error related to "Too many unique values" for facet.method = fc. so changed it to enum. Anybody is aware of the error ?

field definition in schema file:

<fieldType name="arches_typeahead" class="solr.TextField" omitNorms="true">
800            <analyzer type="index">
801                <tokenizer class="solr.WhitespaceTokenizerFactory"/>
802                <!--  agressively split words -->
803                <filter class="solr.WordDelimiterFilterFactory"
804                        preserveOriginal="1"
805                        generateWordParts="1" generateNumberParts="1" catenateWords="1"
806                        catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
807                <!-- remove garbage and keep alpha-numeric-accent and reserved characters -->
808                <filter class="solr.PatternReplaceFilterFactory" pattern="[^\p{L}\P{M}\p{Nd}\p{Nl}\p{Cs}@$%_#?*+^!~&amp;|(){}\\[\\].'\&quot;/\\\\-]+"
809                        replacement="" replace="all"/>
810                <filter class="solr.TrimFilterFactory"/>
811                <filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="4"/>
812                <filter class="solr.LowerCaseFilterFactory"/>
813            </analyzer>
814            <analyzer type="query">
815                <tokenizer class="solr.KeywordTokenizerFactory"/>
816                <filter class="solr.LowerCaseFilterFactory"/>
817                <filter class="solr.PatternReplaceFilterFactory" pattern="[^\p{L}\P{M}\p{Nd}\p{Nl}\p{Cs}@$%_#?*+^!~&amp;|(){}\\[\\].'\&quot;/\\\\-]+"
818                        replacement="" replace="all"/>
819                <filter class="solr.TrimFilterFactory"/>
820            </analyzer>
821        </fieldType>

[09:55:54] ERROR 3-thread-1 o.a.s.c.SolrCore <> org.apache.solr.common.SolrException: Exception during facet.field: arches_typeahead_text
        at org.apache.solr.request.SimpleFacets$2.call(SimpleFacets.java:598)
        at org.apache.solr.request.SimpleFacets$2.call(SimpleFacets.java:583)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at org.apache.solr.request.SimpleFacets$1.execute(SimpleFacets.java:537)
        at org.apache.solr.request.SimpleFacets.getFacetFieldCounts(SimpleFacets.java:608)
        at org.apache.solr.request.SimpleFacets.getFacetCounts(SimpleFacets.java:264)
        at org.apache.solr.handler.component.FacetComponent.process(FacetComponent.java:107)
        at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:226)
        at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:135)
        at org.apache.solr.core.SolrCore.execute(SolrCore.java:1976)
        at ariba.arches.search.CoreContainer.initialWarmup(CoreContainer.java:995)
        at ariba.arches.search.CoreContainer$2.run(CoreContainer.java:215)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 3152
        at org.apache.lucene.util.FixedBitSet.get(FixedBitSet.java:245)
        at org.apache.solr.search.BitDocSet.exists(BitDocSet.java:165)
        at org.apache.solr.search.SortedIntDocSet.intersectionSize(SortedIntDocSet.java:232)
        at org.apache.solr.search.BitDocSet.intersectionSize(BitDocSet.java:174)
        at org.apache.solr.search.SolrIndexSearcher.numDocs(SolrIndexSearcher.java:2048)
        at org.apache.solr.request.SimpleFacets.getFacetTermEnumCounts(SimpleFacets.java:922)
        at org.apache.solr.request.SimpleFacets.getTermCounts(SimpleFacets.java:453)
        at org.apache.solr.request.SimpleFacets.getTermCounts(SimpleFacets.java:366)
        at org.apache.solr.request.SimpleFacets$2.call(SimpleFacets.java:592)
        ... 16 more

Thanks, Sarita

  • Which version of Solr? As this is a low-level error in Lucene, upgrading to a more recent version is probably the solution - the issue might also have been caused by a corrupted index file. – MatsLindh Jul 20 '20 at 06:07
  • @MatsLindh thanlks for the reply.we are using solr version 4.10.4.. – Sarita Singe Jul 20 '20 at 10:08
  • here is the query "q=arches_typeahead:a&facet.method=enum&facet.field=arches_typeahead_text&f.arches_typeahead_text.facet.enum.cache.minDF=30&facet=true&facet.limit=20" ... after browsing through many online documents wanted to try two solutions 1) setting docValues to true. But this is not supported for Text fields.2) setting parameter facet.enum.cache.minDF to any value between 25-40. even this did not solve my issue. – Sarita Singe Jul 20 '20 at 10:15
  • I think upgrading to a more recent version of Lucene and Solr and at least test your use case there is the way forward, as there has been many performance optimizations regarding faceting since 4.10 was released five years ago. Another option is to manually tokenize the field and use a string field type instead for completion (or look into use the suggester). – MatsLindh Jul 20 '20 at 13:49
  • Sorry,I did not understand "manually tokenize the field" part.Is it something to do with custom tokenizer? Could you please elaborate ? – Sarita Singe Jul 21 '20 at 06:36
  • Split the content of the field before you're sending it to Solr, so that you have a multivalued field with separate values instead; as long as the field type is string, you should be able to use docvalues on the field (I don't remember if this was true for 4.10). – MatsLindh Jul 21 '20 at 06:49

0 Answers0