私は、比較的小さなドキュメント/文をインデックス化するプロジェクトに取り組んでおり、大きなドキュメントをクエリとして使用してこれらのインデックスを検索したいと考えています。比較的単純な例を次に示します。ドキュメントのインデックスを作成しています:
docId : 1
text: "back to black"
そして、次の入力を使用してクエリを実行したい:
"Released on 25 July 1980, Back in Black was the first AC/DC album recorded without former lead singer Bon Scott, who died on 19 February at the age of 33, and was dedicated to him."
Lucene でこれに最適なアプローチは何ですか? 検索したいテキストが正確に入力クエリである単純な例では、 QueryParser.parse(QueryParser.escape(...my large input...))を使用するよりも、独自のアナライザー+ PhraseQuery を使用した方が良い結果が得られます。これにより、大きなブール/用語クエリが作成されます。
しかし、実際の例で PhraseQuery アプローチを使用しようとすることはできません。ShingleAnalyzerWrapper のような単語 N-Gram アプローチを使用する必要があると思いますが、入力ドキュメントが非常に大きくなる可能性があるため、組み合わせ論を処理するのが難しくなります.. .
言い換えれば、私は立ち往生しており、どんなアイデアでも大歓迎です:)
PS私はそれについて言及しませんでしたが、小さなドキュメントをインデックス化する際の厄介なことの1つは、「ノルム」値(フロート)が1バイトのみでエンコードされているため、3〜4語の文すべてが同じノルム値を取得することです。 「AB C」のような文を検索すると、結果として「AB C」と「ABC D」が同じスコアで表示されます。
ありがとう !