Lucene でインデックス化された「説明」フィールドがあります。このフィールドには、本の説明が含まれています。BooleanQuery クラスを使用して、このフィールドで「これらのすべての単語」機能を実現するにはどうすればよいですか? たとえば、ユーザーが「売れ筋の本」と入力した場合、説明にこれらすべての単語が含まれる本を返す必要があります。
ありがとう!
Lucene でインデックス化された「説明」フィールドがあります。このフィールドには、本の説明が含まれています。BooleanQuery クラスを使用して、このフィールドで「これらのすべての単語」機能を実現するにはどうすればよいですか? たとえば、ユーザーが「売れ筋の本」と入力した場合、説明にこれらすべての単語が含まれる本を返す必要があります。
ありがとう!
これを機能させるには、次の 2 つの部分があります。
AND
。1 については、Lucene に付属するorg.apache.lucene.analysis
アナライザーとトークナイザーが多数あります。パッケージを参照してください。多くの異なる言語、ステミング、ストップワードなどのオプションがあります。
#2 については、主にパッケージ内に、Lucene に付属する多くのクエリ パーサーがありますorg.apache.lucene.queryParser
。MultiFieldQueryParser
あなたにとって良いかもしれません:すべての用語が存在することを要求するには、単に電話してください
QueryParser.setDefaultOperator(QueryParser.AND_OPERATOR)
Lucene in Actionは、いくつかのバージョンは古いものの、依然として正確であり、分析とクエリの解析に関する詳細情報を得るために非常に役立ちます。
を介してすべてのクエリ部分(用語ごとに1つ)を追加すると信じています
BooleanQuery.add(Query, BooleanClause.Occur)
その2番目のパラメーターを定数BooleanClause.Occur.MUST
に設定すると、必要なものが得られるはずです。同等のクエリ構文は、「+term1+term2 +term3 ...」になります。