How do I accumulate counts over a MultiReader (2 IndexReader)?
The following code causes an IOException:
ArrayList<FacetRequest> facetRequests = new ArrayList<FacetRequest>();
for (String groupField : groupFields)
facetRequests.add(new CountFacetRequest(new CategoryPath(groupField,
'/'), 1));
FacetSearchParams facetSearchParams = new
FacetSearchParams(facetRequests);
StandardFacetsAccumulator accumulator = new
StandardFacetsAccumulator(facetSearchParams, reader, taxonomyReader);
FacetsCollector facetsCollector = FacetsCollector.create(accumulator);
// perform documents search and facets accumulation
searcher.search(query, facetsCollector);
// return facets results in a proper format
return getFacetResults(facetsCollector, sr);
Here reader is a MultiReader of 2. I am using Lucene 4.3.1.
The following is the callstack. It looks like it has something to do with the
MultiReader.
How do I make it work?
java.io.IOException: PANIC: Got unexpected exception while trying to
get/calculate total counts
at
org.apache.lucene.facet.search.StandardFacetsAccumulator.accumulate(StandardFacetsAccumulator.java:156)
at
org.apache.lucene.facet.search.StandardFacetsAccumulator.accumulate(StandardFacetsAccumulator.java:378)
at
org.apache.lucene.facet.search.FacetsCollector.getFacetResults(FacetsCollector.java:214)
at
com.esri.arcgis.search.SearchHandler.getFacetResults(SearchHandler.java:551)
at com.esri.arcgis.search.SearchHandler.search(SearchHandler.java:350)
at com.esri.arcgis.search.SearchHandler.search(SearchHandler.java:239)
at com.esri.arcgis.search.test.Searcher.invokeSearch(Searcher.java:58)
at com.esri.arcgis.search.test.Searcher.main(Searcher.java:32)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 34
at
org.apache.lucene.facet.search.CountingAggregator.aggregate(CountingAggregator.java:43)
at
org.apache.lucene.facet.search.StandardFacetsAccumulator.fillArraysForPartition(StandardFacetsAccumulator.java:309)
at
org.apache.lucene.facet.search.StandardFacetsAccumulator.accumulate(StandardFacetsAccumulator.java:168)
at
org.apache.lucene.facet.complements.TotalFacetCounts.compute(TotalFacetCounts.java:176)
at
org.apache.lucene.facet.complements.TotalFacetCountsCache.computeAndCache(TotalFacetCountsCache.java:157)
at
org.apache.lucene.facet.complements.TotalFacetCountsCache.getTotalCounts(TotalFacetCountsCache.java:104)
at
org.apache.lucene.facet.search.StandardFacetsAccumulator.accumulate(StandardFacetsAccumulator.java:129)
... 7 more