2017-04-27 3 views
1

私は「DOC」という名前のテキストフィールドに「バー」に続く「foo」というを探しています。 私のクエリは、テキスト「fooはバーに歩く」ではなく、私はいくつかの類似した質問が、具体的な答えを見てきました 「バーがfooのための場所を持っている」と一致する必要があります。動作しません クエリ: Q = DOC:フー・*バー Q = DOC:/.* FOO。 バー。/ これは、テキストフィールドの各単語が別々にトークン化されているためです。これを回避する方法はありますか? (注:私はフィールドタイプを変更することはできません)Solrのワイルドカードクエリ

+0

使用しているトークナイザは何ですか? – root545

答えて

1

Surround Query Parserを見てくださいとComplex Phrase Query Parser

でSurroundQParserは 近接検索機能を提供サラウンドクエリ構文を、可能にします。

ポジション演算子は2つあります。wは、順序付きスパンクエリ を作成し、nは順序付けられていないものを作成します。両方の演算子は、2つの項間の距離を示す数値 を取ります。デフォルトは1で、最大値はです。 です。クエリ文字列は、どのような方法で分析されていない

注意。

例:

{!surround} 3w(foo, bar) 

用語「foo」と「バー」は、それらの間 すなわち、せいぜい2項(互いに 超えない3点から離れていた文書を見つけるだろう。この例で)。

複雑なフレーズクエリパーサーについては、一致するキーワードの順序を指定できるinOrderパラメータに注意してください。