【发布时间】:2014-05-09 11:44:32
【问题描述】:
是否可以根据字段的存在来提高文档的相关性?我已经阅读了有关 function score queries 的信息,但我想知道如何考虑存在 - 据我了解,field_value_factor 适用于该字段的内容,而不是它的存在。
【问题讨论】:
标签: elasticsearch
是否可以根据字段的存在来提高文档的相关性?我已经阅读了有关 function score queries 的信息,但我想知道如何考虑存在 - 据我了解,field_value_factor 适用于该字段的内容,而不是它的存在。
【问题讨论】:
标签: elasticsearch
函数分数查询是可能的,但是分数函数的计算量很大而且不是必需的(请记住,下面使用的exists 查询可能在 2014 年不可用)。
可以做到以下几点:
POST _search
{
"query": {
"bool" : {
"should" : [
{
match_all: {
"boost": 10
}
},
{
"exists": {
"field": "some_field_that_should_exist"
}
}
],
"minimum_should_match" : 2,
}
}
}
如果应该匹配的最小值为 2,我们说两个子句必须匹配才能使 should 子句匹配。这可以防止将提升应用于没有该字段的文档。
【讨论】:
这可以简化。 Exists 是一个常数分数查询,boost 可以直接和它一起使用。
{
"query":{
"exists":{
"field":"some_field_that_should_exist",
"boost":10
}
}
}
【讨论】: