11

我有三个食物类型指数“意大利”、“西班牙”、“美国”。当用户搜索“Cheese”时,来自“Italian”的文档似乎出现在顶部。如果我倾向于说“西班牙语”,是否有可能“提升”结果?(我仍然应该得到意大利语的结果,但是基于索引类型“西班牙语”的一些数字提升值,结果中返回的文档的排序优先于“西班牙语”索引。这在用户输入 lucene 和/还是 ES 查询?如果是,怎么做?

4

4 回答 4

6

_type为字段或_index(或两者)添加带有提升的术语查询。

于 2013-07-18T16:21:54.620 回答
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您可以设置的属性。或者,您可以将查询包装在自定义 boost factor中。通常,我可能更喜欢前者。

于 2013-07-18T17:00:31.073 回答