4

我想根据数字与查询的接近程度对我的文档进行评分。鉴于我有两个文档document1.field = 1,然后我想要document2.field = 10一个查询 。或者换句话说,我想要对数字进行模糊查询之类的东西。我将如何实现这一目标?用例是我想支持价格查询(精确或范围),但想要对不完全在边界内的东西进行排名。field = 3document1._score > document2._score

4

2 回答 2

5

您正在寻找衰减函数

衰减函数使用一个函数对文档进行评分,该函数根据文档的数字字段值与用户给定原点的距离而衰减。这类似于范围查询,但边缘平滑而不是框。

于 2015-12-01T20:47:28.057 回答
1

它可以使用custom_score查询来实现,其中脚本将根据确切价格和所需价格之间差异的绝对值来确定提升。所需的价格应作为参数传递给脚本,以避免为每个请求重新编译脚本。

或者,它可以使用custom_filters_score查询来实现。此处的过滤器将包含围绕所需价格的不同范围。较小的范围将具有更高的提升,并且在列表中比较大的范围更高。

于 2013-04-08T21:49:30.590 回答