《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.3.Search通过Kibana(7) https://developer.aliyun.com/article/1231064
Boosting 查询
Boosting 用于控制评分相关度,可以提升评分也可以降低评分。
可以看到 2 条文档记录评分一致:"_score" : 1.3862942 ,
当我们修改 negative_boost: 0.2 时,此时返回(省略部分无关字段)
POST /my_goods/_search { "query": { "boosting": { "positive": { "term": { "skuCode": { "value": "skuCode1" } } }, "negative": { "term": { "goodsName": { "value": "三星" } } }, "negative_boost": 0.2 } } } #返回 "hits" : [ { "_index" : "my_goods", "_type" : "_doc", "_id" : "1", "_score" : 1.3862942, "_source" : { "goodsName" : "苹果 51英寸 4K超高清", "skuCode" : "skuCode1", "brandName" : "苹果", "closeUserCode" : [ "0" ], "channelType" : "cloudPlatform", "shopCode" : "sc00001", "publicPrice" : "8188.88", "groupPrice" : null, "boxPrice" : null, "boostValue" : 1.8, "shopName" : "张三店铺" } }, { "_index" : "my_goods", "_type" : "_doc", "_id" : "6", "_score" : 0.27725884, "_source" : { "goodsName" : "三星UA55RU7520JXXZ 51英寸 4K超高清", "skuCode" : "skuCode1", "brandName" : "三星", "closeUserCode" : [ "0" ], "channelType" : "cmccPlatform", "shopCode" : "sc00001", "publicPrice" : "8188.88", "groupPrice" : null, "boxPrice" : null, "boostValue" : 1.2 } } ]
此时发现文档 ID=6 的评分下降到 _score : 0.27725884,因为在 negative 命中了查询条件,negative_boost 在 0 到 1 之间时,用于降低评分,相反,大于 1 用于提升评分。
Constant score query 查询
当查询不关心 TF(词频)时,就可以使用 constant score query 。
POST /my_goods/_search { "query": { "constant_score": { "filter": { "term": { "goodsName": "苹果" } }, "boost": 1.2 } } }
返回(省略部分无关字段)
{ "_index" : "my_goods", "_type" : "_doc", "_id" : "3", "_score" : 1.2, "_source" : { "goodsName" : "苹果UA55RU7520JXXZ 53英寸 4K高清" } }, { "_index" : "my_goods", "_type" : "_doc", "_id" : "4", "_score" : 1.2, "_source" : { "goodsName" : "山东苹果UA55RU7520JXXZ 苹果54英寸 5K超高清" } } }
可以看到,文档 ID =3 的评分和文档 ID =4 的评分一样,但是 ID=4 的匹配相关度更高,这是由于我们忽略了词频对打分的影响。
《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.3.Search通过Kibana(9) https://developer.aliyun.com/article/1231062