1

現在、いくつかの Lucene インデックス セット (シャードと呼んでいます) があり、さまざまなドキュメント セットにインデックスを付けています。それらは独立しているため、他のものを読まなくてもそれぞれを検索できます。次に、クエリ リクエストを取得します。すべてのインデックス セットを検索し、結果を組み合わせて最終的なトップ ドキュメントを形成したいと考えています。

ドキュメントをスコアリングするとき、Luceneはすべての用語の < idf >を知る必要があり、異なるインデックス セットは同じ用語に異なる < idf > を与えることを知っています (異なるインデックス セットは異なるドキュメント セットを保持するため)。したがって、私の理解では、異なるインデックス セットのドキュメント スコアを直接比較することはできません。では、最終結果をどのように生成すればよいでしょうか?

明らかな解決策は、最初にインデックスをマージしてから、大きなインデックスに対して検索を実行することです。しかし、これは私には時間がかかりすぎるため、受け入れられません。他のより良い解決策はありますか?

PS: Lucene と Hadoop 以外のパッケージやソフトウェア (Katta など) は使用したくありません。

4

1 に答える 1

7

MultiReaderはあなたが探しているものだと思います。複数の IndexReader がある場合は、次のように言いreader1ますreader2

MultiReader multiReader = new MultiReader(reader1, reader2);
IndexSearcher searcher = new IndexSearcher(multiReader);
于 2013-05-28T15:34:12.580 に答える