gpt4 book ai didi

elasticsearch - 通过Elasticsearch中单词的正确排序对结果进行评分

转载 作者:行者123 更新时间:2023-12-02 23:24:52 28 4
gpt4 key购买 nike

我们有一个带有以下配置的elasticsearch索引:

PUT phonebook
{
"settings":{
"index":{
"number_of_shards":8,
"number_of_replicas":1
}
},
"mappings":{
"person":{
"_all":{
"enabled":false
},
"_source":{
"enabled":true
},
"properties":{
"id":{
"type":"long"
},
"name":{
"type":"text",
"index_options":"positions"
},
"number":{
"type":"long"
}
}
}
}
}

它基本上是一部拥有数十亿条记录的巨大电话簿。我正在使用以下查询搜索此索引:
GET /contacts/contact/_search
{
"size":0,
"query":{
"match":{
"name":{
"fuzziness":1,
"query":"george bush",
"operator":"and"
}
}
},
"aggs":{
"by_number":{
"terms":{
"field":"number",
"size":10,
"order":{
"max_score":"desc"
}
},
"aggs":{
"max_score":{
"max":{
"script":"_score"
}
},
"sample":{
"top_hits":{
"size":1
}
}
}
}
}
}

结果按“数字”字段分组,并以这种方式返回每个数字的最佳匹配。但是我需要的是根据结果中单词顺序的正确性对结果进行自定义评分/排序。
因此,对于“乔治·布什”的查询,“乔治·布什”的得分应始终高于“布什·乔治”。
match_phrase搜索不适合我,因为我在搜索中使用了模糊性。

最佳答案

这样的事情怎么样:

  "query":{
"simple_query_string": {
"query": "\"barack~ obama~\"~3",
"fields": ["name"]
}
},

标记后面的 ~用于模糊方面,短语后面的 ~3处理 斜率,这是我认为您在短语查询中寻找的概念。我认为结果将得到这样的评分,即“巴拉克·奥巴马”的得分高于“奥巴马·巴拉克”。您可以提出一个自定义的 bool查询,该查询可模仿此查询,其中should子句可同时处理模糊性和倾斜性。

一些资源:
  • Simple Query String
  • Mixing It Up-关于坡
  • 的Elasticsearch文档

    关于elasticsearch - 通过Elasticsearch中单词的正确排序对结果进行评分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44437609/

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