在lucene中分组搜索后检索文档

时间:2014-12-03 16:52:03

标签: java lucene full-text-search grouping

我正在对我的资源进行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);

1 个答案:

答案 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
    }
}