node.js - 根据 azure 搜索的分数计算相似度百分比

标签 node.js azure azure-cognitive-search

我使用 Azure 搜索服务和 Cosmos DB 作为数据源,以在 Nodejs 应用程序中启用搜索功能。在一个用例中,我需要显示从 azure 搜索 API 获取的每个文档的相似度百分比(至 100%)。 例如:

API : https://name.search.windows.net/indexes/dbname/docs/search?api-version=2016-09-01

Payload: {
        "search" : "This is a test key for search service",
        "searchFields":"title, description",
        "searchMode":"all",
        "count":true               
        
    }

Response :  "@odata.count": 2,
            "value": [
            {
              "@search.score": 4.190574,// convert to ~70%(assumption) similarity
              "title": "search service",
              "description": "The Search Service test key provides extensive capabilities for search engine-like querying"
            ...},
           {"@search.score": 3.9293563,// convert to ~40%(assumption) similarity
              "title": "test key",
              "description": " test measures your ability to enter groups of numbers using the numeric ten-key pad"
            ...}]

有什么方法可以根据与搜索键的相似度将@search.score转换为doc1 - 70%和doc2 -40%?我通读了有关使用评分配置文件和使用不同的搜索 API 算法的文档。据我了解,分数是根据指标得出的,没有具体的分数范围。但是,如果可以进行任何类型的转换那就太好了,或者我是否需要考虑另一种方法?帮助将不胜感激:)

最佳答案

相关性分数大多是抽象的 - 就 Azure 搜索而言,分数表示搜索词在文档中出现的频率(对罕见单词有一些综合偏差,并使用考虑长度的公式)文档)。分数越高意味着“文档中出现的搜索词越多”。在您的场景中,百分比意味着什么?例如,100% 意味着什么?还是50%?

如果您只想显示百分比而不是分数,同时保持相同的排名,您可以将所有分数除以最高分数(这样每个请求的顶部文档的得分始终为 100%,而其他文档的分数递减)百分比)。但是,这仍然不允许您比较不同请求之间的文档分数。

关于node.js - 根据 azure 搜索的分数计算相似度百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72939874/

相关文章:

sql - Azure 搜索 - 处理不同格式的出生日期

.NET - Windows Azure 队列问题 - 队列的后台工作

sql-server - 服务器对象在 SQL Server Management Studio 中不可用

azure - 搜索带下划线的术语不会返回预期结果

javascript - 在 MacOS 中使用 NodeJS 连接到 Informix - IBM 驱动程序问题

azure - 如何从另一个模块调用物联网边缘代理上的直接方法?

Azure 搜索,使用带有评分配置文件的前缀

javascript - 找不到主模块中的 WEBPACK5 错误 : Error: Can't resolve './src'

node.js - NODE_PATH 匹配 npm 根目录

javascript - 通过 Mocha 测试表示链式方法和成员 Typescript