Lucene侧钻,带有自定义排序字段或TopCoreDocCollector

Lucene侧钻,带有自定义排序字段或TopCoreDocCollector,lucene,drilldown,Lucene,Drilldown,我试图用Lucene 4.6.1实现横向搜索。 以下代码可以正常工作: DrillSideways ds = new DrillSideways(searcher, taxoReader); FacetSearchParams fsp = new FacetSearchParams(getAllFacetCounts()); DrillDownQuery ddq = new DrillDownQuery(fsp.indexingParams, mainQuery); List<Cate

我试图用Lucene 4.6.1实现横向搜索。 以下代码可以正常工作:

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));

结果为空集,没有错误。怎么了?

我猜您指的是
钻边结果命中数的值,这是预期行为,如以下文档中所述:

请注意,如果调用DrillSideways.search(DrillDownQuery、Collector、FacetSearchParams),则命中数将为null

您应该从
收集器
中获得点击率

// 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);