gpt4 book ai didi

elasticsearch - Elasticsearch得分从0到1,用于搜索与现有文档相似的文档

转载 作者:行者123 更新时间:2023-12-02 22:34:19 25 4
gpt4 key购买 nike

搜索与现有文档相似的文档时是否需要从0到1计算相对得分?
因此,现有文档的得分为1,所有其他匹配文档的得分应根据该得分计算,且得分<=1。但是现有文档应从搜索中排除。是否有可能在Elasticsearch方面做到这一点,而不仅仅是使用像这样的编程语言手动计算得分:

match_doc_score/search_doc_score
假设我们有带有映射的索引 person:
{
"properties": {
"person_id": {
"type": "keyword"
},
"fullname": {
"type": "text"
},
"email": {
"type": "keyword"
},
"phone": {
"type": "keyword"
},
"country_of_birth": {
"type": "keyword"
}
}
}
我的索引中有3个人:
人物1:
{
"person_id": 1,
"fullname": "John Snow",
"email": "john@gmail.com",
"phone": "111-11-11",
"country_of_birth": "Denmark"
}
人物2:
{
"person_id": 2,
"fullname": "Snow John",
"email": "john@gmail.com",
"phone": "222-22-22",
"country_of_birth": "Denmark"
}
人3:
{
"person_id": 3,
"fullname": "Peter Wislow",
"email": "peter@gmail.com",
"phone": "111-11-11",
"country_of_birth": "Denmark"
}
通过此查询,我们找到与“人1”相似的人:
{
"query": {
"bool": {
"should": [
{
"match": {
"fullname": {
"query": "John Snow",
"boost": 6
}
}
},
{
"term": {
"email": {
"value": "john@gmail.com",
"boost": 5
}
}
},
{
"term": {
"phone": {
"value": "111-11-11",
"boost": 4
}
}
},
{
"term": {
"country_of_birth": {
"value": "Denmark",
"boost": 2
}
}
}
],
"must_not": [
{
"term": {
"person_id": 123
}
}
]
}
}
}
如你看到的:
  • 人1和人2匹配:全名,电子邮件,出生国家。
  • 人1和人3匹配者:电话,出生国家。

  • 如果我们在索引(人1)中具有完全匹配的订单,是否可以得分为0..1?
    我知道有一个 more_like_this查询,但是在现实生活中,搜索查询可能很复杂,因此 more_like_this不是一个好的选择。甚至elasticsearch文档都说,如果您需要对查询的更多控制,请使用 bool(boolean) 查询组合。

    最佳答案

    尚未尝试过但是功能评分的field value factor可能会解决您的查询。

    关于elasticsearch - Elasticsearch得分从0到1,用于搜索与现有文档相似的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63931773/

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