【发布时间】:2019-09-07 12:49:29
【问题描述】:
假设我有 3 个文档: 甲、乙、丙 所有术语都非常相似,内部分数也非常相似 人们搜索 B 比 A 和 C 更频繁,但 C 比 A 更频繁。 我可以按 B、C、A 等顺序获得分数吗?
【问题讨论】:
-
您如何定义“搜索频率更高的人”? :-) 如果您可以在 Elasticsearch 可以使用的东西中量化这一点,那么它可能是可能的。
标签: elasticsearch
假设我有 3 个文档: 甲、乙、丙 所有术语都非常相似,内部分数也非常相似 人们搜索 B 比 A 和 C 更频繁,但 C 比 A 更频繁。 我可以按 B、C、A 等顺序获得分数吗?
【问题讨论】:
标签: elasticsearch
在您描述的用例中,您无法更改评分/相关性计算的行为。使用例如boosting 的可能性匹配查询以在搜索值时影响评分。但这不合适,因为您只想对文档进行排序。
因此有关搜索频率的信息必须是文档本身的一部分,这意味着它必须是一个自己的字段。然后你可以简单地添加如下的排序子句
{
"query": {
// your awesome query...
},
"sort": [
{
"search_frequency": {
"order": "desc"
}
},
"_score"
]
}
此解决方案中的挑战 是保持字段search_frequency 的值是最新的。您可以通过Update API 进行操作。
【讨论】: