0

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

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

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

4

3 回答 3

1

我相信您要的是Field Collapsing,这是 Solr 的一个功能(我也相信 Elasticsearch)。

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

  1. 向作为系列成员的每个文档添加一个“系列 ID”字段。您必须确保每个新系列都会增加此值。
  2. 对 Lucene 进行初始查询,并获得一个命中列表。
  3. 对于每个命中,检查它是否有一个系列 id;如果是,请按系列 ID 进行另一次查询,以检索系列的所有成员。

另一种方法是将所有系列成员的 ID 存储在每个成员文档内的字段中。

于 2010-10-10T09:14:22.937 回答
0

Lucene 中没有内置任何东西可以根据字段折叠结果。您需要自己实施。

但是,他们最近将此功能内置到 Solr 中。

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

于 2010-10-10T01:23:37.440 回答
0

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

于 2015-09-30T15:20:22.883 回答