如何分组lucene的结果?

时间:2010-10-09 16:19:36

标签: java .net lucene lucene.net zend-search-lucene

我的应用程序索引讨论线程。讨论中的每个条目都被索引为一个单独的Lucene文档,其中包含一个common_id字段,可用于将搜索命中分组到一个讨论中。

目前,当执行搜索时,如果一个帖子有3个条目,则返回3个单独的命中。尽管这是正确的,但从用户的角度来看,同一条目多次出现在搜索中。

有没有办法告诉lucene在返回它们之前通过common_id字段对搜索结果进行分组?

3 个答案:

答案 0 :(得分:1)

我相信你所要求的是Field Collapsing,这是Solr的一个特色(我也相信Elasticsearch)。

如果你想自己动手,一种可行的方法是:

  1. 将“系列ID”字段添加到作为a成员的每个文档中 系列。您必须确保每次都增加 新系列。
  2. 向Lucene发出初步查询,并获取一个命中列表。
  3. 对于每次点击,检查它是否有系列ID;如果是,请按系列ID进行另一个查询,以便检索所有 该系列的成员。
  4. 另一种方法是将所有系列成员的ID存储在每个成员文档中的字段中。

答案 1 :(得分:0)

Lucene没有任何内容可以根据字段折叠结果。您需要自己实现。

但是,他们最近在Solr中构建了这个功能。

请参阅http://www.lucidimagination.com/blog/2010/09/16/2446/

答案 2 :(得分:0)

从版本3.2开始,lucene支持基于字段对搜索结果进行分组。 http://lucene.apache.org/core/4_1_0/grouping/org/apache/lucene/search/grouping/package-summary.html