11

「イタリアン」、「スペイン料理」、「アメリカン」の 3 つの食品タイプ インデックスがあります。ユーザーが「チーズ」を検索すると、「イタリア語」のドキュメントが一番上に表示されます。私が「スペイン語」と言うのを優先した場合、結果を「ブースト」することは可能ですか? (私はまだイタリア語の結果を取得する必要がありますが、インデックス タイプ「スペイン語」の数値ブースト値に基づいて、結果で返されるドキュメントの順序は「スペイン語」インデックスを優先します。これはユーザー入力の lucene および/で可能ですか?またはESクエリ?もしそうなら、どのように?

4

4 に答える 4

4

複数のインデックスを一度にクエリする場合、Search API に渡されるオブジェクトのトップ レベルでインデックス ブーストを指定することができます。

curl -XGET localhost:9200/italian,spanish,american/_search -d '
{
    "query":{"term":{"food_type":"cheese"}},
    "indices_boost" : {
        "ilalian" : 1.4,
        "spanish" : 1.3,
        "american" : 1.1
    }
}'

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-index-boost.html#search-request-index-boost

于 2014-10-27T01:34:29.770 に答える
4

関数スコア クエリの一部として script_score を使用します。

function_score: {
  script_score: {
    script: "doc['_type'].value == '<your _type>' ? _score * <boost_factor> : _score"
  }
}
于 2014-07-23T18:05:36.897 に答える
0

クエリ時のブースティングでは、通常、クエリ (クエリ文字列boostなど) に設定可能な属性があります。または、カスタム ブースト ファクターでクエリをラップすることもできます。通常、私はおそらく前者を好むでしょう。

于 2013-07-18T17:00:31.073 に答える