gpt4 book ai didi

search - 使用Elasticsearch对所有多匹配查询字段进行通用IDF评分

转载 作者:行者123 更新时间:2023-12-02 23:40:56 25 4
gpt4 key购买 nike

使用以下文档设置:

curl -XPUT "http://localhost:9200/test/books/1" -d '{
"title": "Bacon Dishes",
"tags": ["bacon", "cooking"]
}'

curl -XPUT "http://localhost:9200/test/books/2" -d '{
"title": "Beyond Bacon",
"tags" : ["cooking"]
}'

然后以下 查询:
curl -XGET "http://localhost:9200/test/books/_search?pretty=true&search_type=dfs_query_then_fetch" -d ' {
"explain" : true,
"query" : {
"multi_match" : {
"query" : "bacon beyond",
"fields" : ["title^2","tags^1"]
}
}
}'

解释计划显示,标题的分数是使用 idf(docFreq=2, maxDocs=2)计算的,而标签的分数(如果存在)是使用 idf(docFreq=1, maxDocs=2)计算的。

当有100本书,其中50本书的标题中带有“培根”,而只有1本书的标签中具有“培根”,而标题中没有“培根”时,这将成为一个问题(至少对我们而言)。使用上面的查询,标签中带有“培根”的文档将获得更高的评分,尽管标题得到了提升。

我希望第一个示例中的tag和title字段的得分计算为:
 idf(docFreq=2, maxDocs=2)

也就是说,我希望分数计算在多重匹配查询的所有字段中使用术语的docFreq。这可能吗?

最佳答案

我只是增加标题的标题,足以使其比标签字段更重要。

我不认为您想实现自己的自定义相似性并将其插入elasticsearch。

请记住,对字段添加适当的权重并进行增强是微调,这需要通过真实的索引,真实的数据和真实的查询来实现。

关于search - 使用Elasticsearch对所有多匹配查询字段进行通用IDF评分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19373302/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com