elasticsearch - 如何在多个搜索结果中标准化分数
问题描述
在使用 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%]
我想要一个标准的最高分数或一种量化任何/多个查询的最佳结果的方法。
我要显示分数
'结果与查询的相似程度'
不是
'结果与其他结果相比如何排名。'
解决方案
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 函数的基本标准化)。
但是同样,您遇到了问题,您找到了解决方案,并尝试使该解决方案适合弹性搜索。也许通过准确描述问题和期望的结果可以揭示一个更简单的解决方案。
推荐阅读
- python - ModuleNotFoundError:训练对象图像时没有名为“object_detection”的模块
- github - 让 Jekyll 使用现有的 Github Pages 站点
- python - 将 Jupyter 与适用于 Linux 的 Windows 子系统一起使用
- excel - 合并两个私有 workbook_open
- ios - CollectionView insertItem 导致整个列表被刷新
- excel - 如何在 Excel VBA 中定义某个类别中所有值的数组/集合?
- wordpress - 为 wordpress 配置社交登录
- batch-file - 批处理 - 通过延迟扩展获取本地值
- python - TensorFlow:带有轴选项的 bincount
- haskell - haskell解析错误不正确的标识?