2016-09-29 10 views
0

検索語句に "house garden garage"というクエリがあると仮定します。索引内の文書には、「家、庭」、「庭」、「ガレージ」、および「ハウスガレージ」のみが含まれていますが、3つの単語をまとめた文書はありません。複数の単語を検索し、一致のない単語にマークを付ける

現在のクエリはsplit_keyword・アナライザと演算子「AND」で構築しています。したがって、クエリは結果を返しません。

しかし、一つの検索語が省略された場合の結果があります。

はそれだけで3つの用語のサブセットに一致する文書を返し、その結果で省略語を取得することはできますか?

現時点では、私がこれを見る唯一の方法はでクエリを実行「OR」演算子として、有効になって説明し、各フィールドの単一の単語のスコアをピックアップし、一致しない用語を見つけることです。しかし、これは非常に意図していないようです。

答えて

0

私はNamed Queriesはここに非常に参考になると思います。あなたはそれがマッチした言葉を教えてくれますし、その後、あなたはどれを把握することができるようになりますmatched_queriesフィールドをチェックした結果では例えば

{ 
    "query": { 
    "bool": { 
     "should": [ 
     { 
      "match": { 
      "your_field": { 
       "query": "house", 
       "_name" : "house" 
      } 
      } 
     }, 
     { 
      "match": { 
      "your_field": { 
       "query": "garden", 
       "_name" : "garden" 
      } 
      } 
     }, 
     { 
      "match": { 
      "your_field": { 
       "query": "garage", 
       "_name" : "garage" 
      } 
      } 
     } 
     ] 
    } 
    } 
} 

のために一致する言葉を把握する_nameのparamでSHOULD句でクエリを書くことができ用語は省略されました

関連する問題