如何在elasticsearch或lucene中根据索引类型提高搜索效率?

11
我有三个食品类型指标,“意大利”,“西班牙”和“美国”。当用户搜索“奶酪”时,“意大利”文档似乎排在首位。如果我更偏好于“西班牙”,是否可能“提升”结果?(我仍然应该得到“意大利”的结果,但基于某些数值提升值为“西班牙”索引类型的结果,返回结果中的文件排序将优先考虑“西班牙”的索引。这在用户输入的Lucene和/或ES查询中是可能的吗?如果可能,怎么实现?

1
也许您正在寻找索引提升(index-boost)?https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-index-boost.html - Sid
4个回答

6

_type 字段或 _index 字段(或两者都)添加一个带有加权的术语查询。


目前正在使用字符串查询,是否可以将其与术语查询一起使用? - Rolando
combine them with a bool - Jilles van Gurp
在官方文档中没有找到提升_type的方法,你能给我一个示例或链接吗?http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-term-query.html - navins

4

Alexey,这需要 ES 1.7 吗? - Thomas Doman
@Alexey Tigarev 我该如何使用Java客户端实现这个功能? - Thiago
无论是否使用此,结果得分似乎对我来说都没有变化。 - Jeffrey04

4

使用script_score作为函数得分查询的一部分:

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

我使用了 "script": "doc['_type'].value == '35' ? _score * 2 : _score",结果出现了 Query Failed [Failed to execute main query]]; nested: GroovyScriptExecutionException[MissingPropertyException[No such property: _type for class: Script4]] - navins

0

对于查询时间加权,查询(例如查询字符串)通常具有可以设置的boost属性。或者,您可以将查询包装在自定义加权因子中。通常我会更喜欢前者。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接