0

私のアプリケーションはディスカッションスレッドにインデックスを付けます。ディスカッションの各エントリは、検索ヒットを1つのディスカッションにグループ化するために使用できるcommon_idフィールドを持つ個別のLuceneドキュメントとしてインデックス付けされます。

現在、検索が実行されるときに、スレッドに3つのエントリがある場合、3つの別々のヒットが返されます。これは正しいですが、ユーザーの観点からは、同じエントリが検索に複数回表示されています。

luceneに検索結果をcommon_idフィールドでグループ化してから返すように指示する方法はありますか?

4

3 に答える 3

1

あなたが求めているのは、Solrの機能であるField Collapsingだと思います(Elasticsearchもそうだと思います)。

あなたがあなた自身を転がしたいならば、これをする1つの可能な方法は次のとおりです:

  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 に答える