如何标准化多个搜索结果的分数

How to normalize score across multiple search results

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

在数据库中: 爱丽丝、鲍勃、凯茜

搜索查询 1:爱丽丝

   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%]

我想要一个标准的最高分数或一种方法来量化 any/multiple 查询的最高结果。

我要显示分数

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

没有

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

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 函数对样本进行基本归一化,您将确定这是足够的)。

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