2014-02-28 75 views
0

我正在嘗試使用Lucene 4.6.1實現鑽取方向搜索。 下面的代碼工作正常:Lucene使用自定義排序字段的DrillSideways或使用TopScoreDocCollector

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

但是,如果我想通過TopScoreDocCollector,像

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

的結果是什麼空集和沒有錯誤。哪裏不對?

回答

0

我猜你是指的DrillSidewaysResult.hits的價值,它是預期的行爲,爲DrillSidewaysResult文檔中指出:

請注意,如果你叫DrillSideways.search(DrillDownQuery,收藏家, FacetSearchParams),那麼命中將爲空。

您應該從Collector取代您的命中。

+0

我錯過了,謝謝。 –