首页 > 解决方案 > 如何在多个搜索结果中标准化分数

问题描述

在使用 Elastic Search 标准化分数时,我需要一些帮助。我正在使用 N-Gram、模糊性、自定义查询和语音搜索

数据库中:Alice、Bob、Cathy

查询一:爱丽丝

   Results are : Max Score(500), Alice(500)[100%], Cathy(300)[60%], Bob(200)[40%]

但是,搜索查询 2:两者

   Results are : Max Score(200), Bob(200)[100%], Alice(100)[50%], Cathy(50)[25%]

我希望结果看起来像什么:

   Results are : Max Score(500), Bob(200)[40%], Alice(100)[10%], Cathy(50)[5%]

我想要一个标准的最高分数或一种量化任何/多个查询的最佳结果的方法。

我要显示分数

'结果与查询的相似程度'

不是

'结果与其他结果相比如何排名。'

标签: elasticsearchelastic-stackelasticsearch-5

解决方案


https://www.elastic.co/guide/en/elasticsearch/reference/7.x/query-dsl-rank-feature-query.html

此外,我想反过来会更容易。你想通过标准化分数来实现什么?最后,你真正想要计算的是什么?一种方法可能是这样的:虽然你不能确定你的结果是否完全匹配,但你可以通过检查它与其余部分的偏差来计算它的相关性。例子:

Input: Alice
Output: Alice (100), Alicia (90), Alkis (50), Alex (48) etc

这里的偏差很明显,您可以看到很可能第一个结果(在主要下降之前)必须非常相对,而不仅仅是匹配。所以你可以假设爱丽丝是 100%

Input: `Alice`
Output: Alexander (100), Alkis (95), Alter (90) etc

这里的偏差不存在。没有大的下降,所以结果要么都是相对的,要么不是。所以你不能假设亚历山大是 100%,但这真的重要吗?

基本上,您依赖于您有足够的数据来计算主要变化的事实(您将确定足够的样本上的 sigmoid 函数的基本标准化)。

但是同样,您遇到了问题,您找到了解决方案,并尝试使该解决方案适合弹性搜索。也许通过准确描述问题和期望的结果可以揭示一个更简单的解决方案。


推荐阅读