2016-10-11 18 views
0

次のクエリでは、この「と「のために」、言葉「見た目」のすべてを持っているすべての文書を検索します。この1つはそれらのいずれかを持っているすべてのドキュメントを検索しながらElasticSearchクエリ文字列クエリdefault_operator

"query": { 
      "query_string": { 
       "query": "look for this", 
       "default_operator":"AND" 
      } 
     } 

三つの言葉:?

"query": { 
      "query_string": { 
       "query": "look for this", 
       "default_operator":"OR" 
      } 
     } 

私の質問は、それは、Googleのスタイルの検索を実行するように、それ最初にリストし、それらのいずれかを持っている文書を用語のすべてを持っているすべての文書、つまり、クエリを変更する方法である

私は助けていただければ幸いです。

答えて

1

デフォルトでは、すべての用語が存在する文書にElasticsearchが高いスコアを与えます。あなたはそれを見るためにexplain apiを使うことができます。

あなたは本当に、あなたはあなたがにハイブーストを与えるためにfuction score queryを使用することができbool query

{ 
    "query": { 
    "bool": { 
     "should": [ 
     { 
      "query_string": { 
      "default_field": "title", 
      "query": "look for this", 
      "default_operator": "AND" 
      } 
     }, 
     { 
      "query_string": { 
      "default_field": "title", 
      "query": "look for this" 
      } 
     } 
     ] 
    } 
    } 
} 

EDIT 1

を使用することができ、文書にすべての用語が存在している非常に高いスコアを与えたい場合望ましい結果。次のクエリを試してください

{ 
    "query": { 
    "function_score": { 
     "query": { 
     "bool": { 
      "should": [ 
      { 
       "query_string": { 
       "fields": [ 
        "title" 
       ], 
       "query": "look for this", 
       "default_operator": "AND" 
       } 
      }, 
      { 
       "query_string": { 
       "query": "look for this", 
       "fields": [ 
        "title" 
       ] 
       } 
      } 
      ] 
     } 
     }, 
     "functions": [ 
     { 
      "filter": { 
      "query": { 
       "query_string": { 
       "fields": [ 
        "title" 
       ], 
       "query": "look for this", 
       "default_operator": "AND" 
       } 
      } 
      }, 
      "weight": 10 
     } 
     ] 
    } 
    } 
} 
+0

私はこれを試しましたが、上のすべての単語を含むドキュメントを持っていません。私はどうすればそれを実現できますか? – na1368

+0

もう1つのアプローチを追加しました。望みの結果が得られない場合は、100に変更してみてください。私はまだESがあなたが使用しているESのどのバージョンが存在するすべての用語を含む文書に高いスコアを与えないのか、まだ分かりません。あなたはまた '_all'フィールドでqueyringですが、私はそれが問題になる可能性がある方法を見ていない – ChintanShah25