2

SOLR 4.0 で検索してフレーズ クエリを実行しようとすると、少し問題が発生します。

「idx_text_general_ci」というフィールドがあります。これは、すべてのフィールドで構成される大文字と小文字を区別しない (すべて小文字の) フィールドです。

フレーズ(マリンフィッター)を検索しようとすると、SOLRはフレーズを2つの単語に分割する代わりにフレーズの検索を拒否します-

/select?defType=edismax&q=idx_text_general_ci:marine%20fitter&debugQuery=true

debugQuery=true 以下の出力:

<lst name="debug">
<str name="rawquerystring">idx_text_general_ci:marine fitter</str>
<str name="querystring">idx_text_general_ci:marine fitter</str>
<str name="parsedquery">
(+(idx_text_general_ci:marine DisjunctionMaxQuery((id:fitter))))/no_coord
</str>
<str name="parsedquery_toString">+(idx_text_general_ci:marine (id:fitter))</str>

上記のように、クエリが 2 つの部分 (idx_text_general_ci:marine と id:fitter) に分割されます。

私が抱えている問題は、idx_text_general_ci フィールドに 2 回出現する「marine fitter」に完全に一致するにもかかわらず、「marine」という単語が 3 回出現するドキュメントよりも低いスコアでランク付けされていることです。私のSOLRが期待どおりにフレーズでフィールドを検索した場合、これは当てはまらないことを私は知っています。

フレーズを引用符で囲むと、結果はゼロになります。

正しい方向への助けやナッジは大歓迎です。

前もって感謝します

アレックス

4

1 に答える 1

2

ここで何が起こっているかというと、デフォルトのクエリ フィールドが のように見えid、クエリを次のように指定しているためです。

idx_text_general_ci:marine fitter

idx_text_general_ci:marineとの DisjunctionMaxQuery として Solr に変換されid:fitterます。idx_text_general_ci:marineおそらく、とが必要ですidx_text_general_ci:fitter。2 つのオプションがあります。1) 各単語の前に正しいフィールドとそれに続くコロンを付けるか、schema.xml の defaultSearchField を に変更することができますidx_text_general_ci

ただし、二重引用符で囲むと結果がゼロになる理由については困惑しています。しかし、上記を行うことはあなたを助けるはずです。

于 2012-07-06T09:12:43.567 に答える