如何在elasticsearch或lucene中基于索引类型提升搜索?

时间:2013-07-18 15:38:16

标签: lucene elasticsearch

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

4 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:4)

使用script_score作为功能得分查询的一部分:

function_score: {
  script_score: {
    script: "doc['_type'].value == '<your _type>' ? _score * <boost_factor> : _score"
  }
}

答案 2 :(得分:3)

如果一次查询多个索引,可以在传递给Search API的对象的顶层指定indices boost:

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

答案 3 :(得分:0)

对于查询时间提升,查询(例如query string)通常具有您可以设置的boost属性。或者,您可以将查询包装在custom boost factor中。我通常更喜欢前者。