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?

Était-ce utile?

La 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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top