2016-03-23 12 views
0

に語順を取らない私は、次の書類を持ってQUERY_STRINGクエリは考慮

{ 
"query": { 
    "query_string": { 
    "query": "​*ello* *worl*" 
    } 
    } 
} 

ドキュメントは、上記と同じ順序で並べられ、私は彼らに1) 3) 2)の注文になることを期待していた。

私の質問はなぜ3番目の文書は2番目の文書よりも高いスコアを持っていませんか?

P.ワイルドカードを使用することは必須です。

+0

同様の問題を持つ人は、それを訴えhttps://discuss.elastic.co/t/query-string-with-wildcard-does-not-calculate-score/5588/3を見てください – Richa

+0

まったく助けにならない、そして率直に言って、私はそのリンクされた問題が何だったか分かりません:)あなたはもっと詳しく説明できますか? – tsikov

+1

この質問はあなたが直面しているのと同じ問題を記述しています。返されるすべてのドキュメントのスコアは、ワイルドカードを使用している同じb'cozです。 – Richa

答えて

0

したがって、elasticsearchのワイルドカードとの関連性によってドキュメントを並べ替えることは不可能です。したがって、私が見つけた回避策は、複数のshouldリーフクエリを持つブールクエリを実行することです。それぞれのクエリは、異なるブーストでワイルドカード検索を実行します。

{ 
    "query": { 
    "bool": { 
     "should": [ 
     { query_string: { query: "ello worl", boost: 4 } }, 
     { query_string: { query: "ello* worl*", boost: 3, analyze_wildcard: true } }, 
     { query_string: { query: "*ello *worl", boost: 2, analyze_wildcard: true } }, 
     { query_string: { query: "*ello* *worl*", analyze_wildcard: true } } 
     ] 
    } 
    } 
} 
関連する問題