Elasticsearch:文档pt.2中具有自定义得分字段的影响力得分

Elasticsearch:文档pt.2中具有自定义得分字段的影响力得分,第1张

Elasticsearch:文档pt.2中具有自定义得分字段的影响力得分

您可以尝试使用此查询-它结合了得分:

confidence
boost_multiplier
字段:

{  "query": {    "function_score": {        "query": { "bool": {     "should": [{         "nested": {"path": "tags","score_mode": "sum","query": {  "function_score": {    "query": {      "match": {        "tags.tag": "landscape"      }    },    "field_value_factor": {      "field": "tags.confidence",      "factor": 1,      "missing": 0    }  }}         }     }] }        },        "field_value_factor": { "field": "boost_multiplier", "factor": 1, "missing": 0        }      }    }}

当我搜索

coast
字词时-它返回:

  • id=1
    仅具有此术语的文档具有该术语,得分为
    "_score": 100.27469

当我搜索

landscape
术语时-它返回两个文档:

  • id=2
    得分为“ _score”的文档:85.83046
  • id=1
    得分为“ _score”的文档:59.7339

由于

id=2
具有较高
confidence
字段值的文档,其得分更高。

当我搜索

coast landscape
术语时-它返回两个文档:

  • id=1
    得分为“ _score”的文档:160.00859
  • id=2
    得分为“ _score”的文档:85.83046

尽管

id=2
具有的文档具有较高的
confidence
字段值,但是具有的文档
id=1
具有匹配的单词,因此得分更高。通过更改
"factor":1
参数的值,您可以决定
confidence
应多少影响结果。

boost_muliplier字段

当我为一个新文档建立索引时,会发生更有趣的事情:假设它与具有的文档几乎相同,

id=2
但是我设置了
"boost_multiplier" :4
"id": 3

{  "created_at" : "2017-07-31T20:43:17-04:00",  "description" : null,  "height" : 4934,  "id" : "3",  "tags" : [    ...    {      "confidence" : 48.36547551196872,      "tag" : "landscape"    },    ...  ],  "width" : 4016,  "color" : "#FEEBF9",  "boost_multiplier" : 4}

使用

coast landscape
term 运行相同的查询将返回三个文档:

  • id=3
    得分为“ _score”的文档:360.02664
  • id=1
    得分为“ _score”的文档:182.09859
  • id=2
    得分为“ _score”的文档:90.00666

尽管的文档

id=3
只有一个匹配的单词(
landscape
),但其
boost_multiplier
值大大提高了评分。在此处,
"factor":1
您还可以使用决定该值应增加多少分值,并
"missing": 0
确定如果没有索引该字段应发生什么。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5007692.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-14

发表评论

登录后才能评论

评论列表(0条)

保存