Question

I am trying to implement drillsideways search with Lucene 4.6.1. Following code works fine:

DrillSideways ds = new DrillSideways(searcher, taxoReader);
FacetSearchParams fsp = new FacetSearchParams(getAllFacetCounts());

DrillDownQuery ddq = new DrillDownQuery(fsp.indexingParams, mainQuery);

List<CategoryPath> paths = new ArrayList<CategoryPath>();
...
add category path
...
if (paths.size() >0)
    ddq.add(paths.toArray(new CategoryPath[paths.size()]));

DrillSidewaysResult dsr = ds.search(null, ddq, 500, fsp); // <-- here
TopDocs topDocs = dsr.hits;
ScoreDoc[] hits = topDocs.scoreDocs;

// list search results
listSearchResults(searcher, hits, Math.min(500, topDocs.totalHits));

But what if I want to pass TopScoreDocCollector, like

// for now it is top score collector,
// but I may want to implement custom sort
TopScoreDocCollector topDocsCollector = TopScoreDocCollector.create(500, true);
DrillSidewaysResult dsr = ds.search(ddq, topDocsCollector, fsp);

the result is empty set and no errors. What is wrong?

Was it helpful?

Solution

I'm guessing you are referring to the value of DrillSidewaysResult.hits, and it is intended behavior, as noted in the documentation of DrillSidewaysResult:

Note that if you called DrillSideways.search(DrillDownQuery, Collector, FacetSearchParams), then hits will be null.

You should get your hits from the Collector instead.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top