私は比較的小さな文書/文章のインデックスを作成するプロジェクトに取り組んでおり、大きな文書をクエリとして使用してこれらのインデックスを検索したいと考えています。ここでは、比較的簡単な例です: 私はドキュメントのインデックスを作成しています:Luceneの比較的小さなインデックス文書で大きな検索クエリを処理する
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で、このための最善のアプローチは何ですか?私が探したいテキストがの場合、入力クエリは、私は自分のアナライザ+ PhraseQueryを使った方が良い結果を得ました。QueryParser.parse(QueryParser.escape(... my large input ...) )) - 大きなブール/タームクエリーが作成されてしまいます。
実際の世界の例でPhraseQueryのアプローチを使用しようとすることはできません。ShingleAnalyzerWrapperのような単語Nグラムのアプローチを使用する必要があると思いますが、入力文書がかなり大きくなるため、言い換えれば...
を処理するために、私はこだわっていると任意のアイデアをいただければ幸いです:)
PS私は言及しませんでしたが、小さな文書の索引付けをする厄介なことの1つは、「ノルム」 - 値(浮動小数点数)のみが1バイトでエンコードされているためです。3-4語のすべての文が同じノルム値を取得するため、 「ABC」のような文章では、結果「ABC」と「ABCD」が同じスコアで表示されます。
ありがとうございます!
ええ、私はそれについて考えましたが、一致する200k文以上あり、私の最初のテスト(インメモリインデックスを使用しない)はかなり遅かったです。しかし、それは正しいアプローチです、私はelasticsearchがそれを行う方法をチェックします:)あなたは適切なクエリで他の方法で動作させることができないと思いますか? –