我正在对我的资源进行lucene搜索。我有一个案例,我搜索特定的产品,我需要通过'关键字'进行分组搜索。 field。我可以通过与之关联的关键字来了解产品的总数。如何获得与此搜索相关的所有文档,以便我可以从中检索其他所需的字段。我尝试使用AbstractAllGroupHeadsCollector,但无法找到并混淆其用法。这是我的代码。 提前谢谢。
Integer totalGroupCount = null;
IndexReader ir = DirectoryReader.open(indexLocation);
IndexSearcher is = new IndexSearcher(ir);
GroupingSearch groupingSearch = new GroupingSearch("keywords");
groupingSearch.setGroupSort(Sort.RELEVANCE);
groupingSearch.setFillSortFields(true);
groupingSearch.setCachingInMB(4.0, true);
groupingSearch.setAllGroups(true);
//TermQuery query = new TermQuery(new Term("products", "wfa packages"));
TopGroups<BytesRef> result = groupingSearch.search(is, query, 0, 10);
// Render groupsResult...
totalGroupCount = result.totalGroupCount; // The group count
GroupDocs<BytesRef>[] d=result.groups;
System.out.println("total groups="+result.totalGroupedHitCount);
答案 0 :(得分:0)
你有GroupDocs
数组,这已经是大部分了。然后,您可以从每个GroupDocs获取scoreDocs
,并使用文档ID从ScoreDoc.doc
查找文档,例如:
for (GroupDocs<BytesRef> group : d) {
for (ScoreDoc scoredoc : group.scoreDocs) {
Document doc = is.doc(scoredoc.doc);
//Do stuff
}
}