两个文档:1. "Some Important Company",2. "Some Important Company Important branch"
由于“重要”文档计数较高(许多文档具有“重要”字词),因此在“某些重要公司”上进行搜索
即使第一个文档完全匹配,第二个文档也会获得更高的分数。
所以我的问题是当完全匹配或降低TF分数时如何提高分数?
对于multi_match
customerName
,我的查询是usedName
,但是在这种情况下,usedName
都是“”。
答案 0 :(得分:0)
我假设您的文档字段是使用标准文本分析器或类似工具编制索引的。我将使用match
复合查询结合一个match_phrase
查询和一个dismax
查询。
这样会得到类似的结果:
{
"query": {
"dis_max" : {
"queries" : [
{ "match" : { "myField" : "Some Important Company" }},
{ "match_phrase" : { "myField" : "Some Important Company" }}
],
"tie_breaker" : 0.7
}
}
}
在match
查询中没有“匹配精确短语”的概念。为此,您需要使用match_phrase
查询。这就是为什么您在这里将两者结合在一起的原因。使用dis_max
,匹配两个查询的文档将得到提升。您可以阅读有关dis_max和match_phrase的更多信息:
https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-dis-max-query.html
https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query-phrase.html