我想根据数字与查询的接近程度对文档进行评分。由于我有两个文件document1.field = 1和document2.field = 10,查询 field = 3然后我想document1._score > document2._score。换句话说,我想要类似针对数字的模糊查询。我将如何实现?用例是我想支持价格查询(精确或范围),但想对不在边界内的商品进行排名。
document1.field = 1
document2.field = 10
field = 3
document1._score > document2._score
可以使用custom_score查询来实现,其中脚本将根据确切价格与所需价格之间的差的绝对值确定提升。期望的价格应作为参数传递给脚本,以避免针对每个请求重新编译脚本。
另外,也可以使用custom_filters_score查询来实现。此处的过滤器将围绕所需价格包含不同的范围。较小的范围将具有较高的提升,并且在列表中将显示较大的范围。