sejal-pawar commented on a change in pull request #159: URL: https://github.com/apache/lucene/pull/159#discussion_r681207002
########## File path: lucene/facet/src/test/org/apache/lucene/facet/TestDrillSideways.java ########## @@ -1798,4 +1798,81 @@ public void testScorer() throws Exception { writer.close(); IOUtils.close(searcher.getIndexReader(), taxoReader, taxoWriter, dir, taxoDir); } + + public void testExtendedDrillSidewaysResult() throws Exception { + // LUCENE-9945: Extend DrillSideways to support exposing FacetCollectors directly + Directory dir = newDirectory(); + Directory taxoDir = newDirectory(); + + RandomIndexWriter writer = new RandomIndexWriter(random(), dir); + + DirectoryTaxonomyWriter taxoWriter = + new DirectoryTaxonomyWriter(taxoDir, IndexWriterConfig.OpenMode.CREATE); + + FacetsConfig config = new FacetsConfig(); + config.setHierarchical("dim", true); + + Document doc = new Document(); + doc.add(new FacetField("dim", "a", "b")); + writer.addDocument(config.build(taxoWriter, doc)); + + Document doc2 = new Document(); + doc.add(new FacetField("dim", "x", "y")); + writer.addDocument(config.build(taxoWriter, doc2)); + + //open NRT + IndexSearcher searcher = getNewSearcher(writer.getReader()); + TaxonomyReader taxoReader = new DirectoryTaxonomyReader(taxoWriter); + + DrillDownQuery ddq = new DrillDownQuery(config); + ddq.add("dim", "x"); + + DrillSideways ds = getNewDrillSidewaysBuildFacetsResult(searcher, config, taxoReader); + + SimpleCollectorManager manager = new SimpleCollectorManager(10, + (a, b) -> Float.compare(b.docAndScore.score, a.docAndScore.score)); + SimpleCollector collector = manager.newCollector(); + + // Sometimes pass in a Collector and sometimes CollectorManager + // so that we can test both DrillSidewaysResult and ConcurrentDrillSidewaysResult + DrillSidewaysResult r; + if (random().nextBoolean()) { + r = ds.search(ddq, collector); + } else { + r = ds.search(ddq, manager); + } + + // compute Facets using exposed FacetCollectors from DrillSidewaysResult + Map<String, Facets> drillSidewaysFacets = new HashMap<>(); + Facets drillDownFacets = getTaxonomyFacetCounts(taxoReader, config, r.drillDownFacetsCollector); + if (r.drillSidewaysFacetsCollector != null) { + for (int i = 0; i < r.drillSidewaysFacetsCollector.length; i++) { + drillSidewaysFacets.put( + r.drillSidewaysDims[i], + getTaxonomyFacetCounts(taxoReader, config, r.drillSidewaysFacetsCollector[i])); + } + } + + Facets facets; + if (drillSidewaysFacets.isEmpty()) { + facets = drillDownFacets; + } else { + facets = new MultiFacets(drillSidewaysFacets, drillDownFacets); + } + + // Facets computed using FacetsCollecter exposed in DrillSidewaysResult + // should match the Facets computed by {@link DrillSideways#buildFacetsResult} + FacetResult facetResultExpected = facets.getTopChildren(2, "dim"); Review comment: Switched it. For completeness, I also switched the order of arguments passed to `assertEquals`. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org For additional commands, e-mail: issues-h...@lucene.apache.org