0

コンテンツがスレッドに編成された StackOverflow のようなシステムがあり、各スレッドには独自のコンテンツ (質問の本文/テキスト) と投稿/返信があります。

私は Lucene を介してこのコンテンツを検索する機能を作成しています。可能であれば、個々の投稿にインデックスを付けたいと考えています (これにより、インデックスの更新が容易になり、結果をより細かく制御および調整できるようになります)。スレッド全体にインデックスを付けるのではなく。ただし、問題は、検索で投稿のリストではなく、スレッドのリストを表示することです。

投稿のコンテンツも検索しながら、ユニークなスレッドのみを結果として返すように Lucene を取得するにはどうすればよいですか?

4

3 に答える 3

1

スレッドをインデックス化するときは、各スレッドを投稿に分割し、各投稿を、Documentそれが属するスレッドを識別する一意の ID を含むフィールドで作成する必要があります。

検索の実装を行うときは、 を使用できる lucene 2.9 以降の使用をお勧めしますCollector。Collectors を使用すると、取得したドキュメントを前処理できるため、同じスレッド ID から発信された投稿をグループ化できます。

于 2010-03-02T21:27:31.810 に答える
1

各ドキュメントは「threadId」フィールドを持つことができます。検索を実行した後、結果セットをループして、すべての一意の threadId を返すことができます。

注意が必要なのは、返す結果の数を指定することです。たとえば、結果ページに 10 件の結果を表示したい場合、おそらく Lucene が 10 + m 件の結果を返す必要があります。これは、返されたセットの特定の割合が重複排除されるためです。スレッド。重複排除されたセットが 10 未満の場合に別の Lucene 検索を実行する追加のロジックを組み込む必要があります。

これは、同じドメインに属する複数の検索結果を折りたたむときに Nutch プロジェクトが行うことです。

于 2010-03-01T18:35:43.627 に答える