规范多个ElasticSearch搜索查询

deikduxw  于 8个月前  发布在  ElasticSearch
关注(0)|答案(1)|浏览(97)

我在ElasticSearch中有一个复杂的查询,查看不同的字段。如果您只有一个查询,那么到目前为止,这种方法运行得非常好。我现在想显示几个结果从不同的searchobjects查询(例如:搜索对象1、搜索对象2、搜索对象3的结果),并根据相关性(在本例中为_score)对它们进行排序。我还在不同的字段上使用不同的boosting,我很快就从ES得到了非常大的_score值。对于SearchObject 1,值可以在200-30000之间。对于搜索对象2,但是在1-10之间。
到目前为止,我已经使用了一个试点查询,并查看了过去的典型分数,然后将其标准化。这给出了不错的结果,但也许有人遇到了类似的问题,并找到了更优雅,更好的解决方案。

3df52oht

3df52oht1#

首先,因为Elastic分数是基于tf-idf之类的算法,所以分数的大小没有上限。因此,要么你需要移动到像常量score这样的东西(如果你不处理文本),要么你需要通过应用sigmoid函数将score转换为像[0-1]这样的范围,以某种方式将可能很大的数字转换为上限数字。
其次,如何将合并不同的分数组合起来,没有一个通用的答案。在大型复杂的应用程序中,人们通常会使用某种机器学习方法来平衡它们。对于较小的情况,您可以尝试为每个分数赋予不同的权重并进行观察。

相关问题