Elasticsearch如何配置brand字段仅用于提权且不扩大召回结果集
Elasticsearch brand字段提权实现方案
实现思路
- 不改动原有召回逻辑,将其放入
bool查询的must子句中,严格限定只有符合原有规则的文档才能进入结果集 - 在外层
bool查询新增should子句配置brand字段的匹配规则,利用ES的bool查询特性:当存在must/filter约束时,should子句无需强制命中,仅会为命中的文档叠加相关性得分,不会扩大召回范围
修改后的查询DSL
{ "query": { "bool": { "must": [ { "bool": { "minimum_should_match": 1, "should": [ { "multi_match": { "query": "Cadbury chocklate milk", "fields": ["name", "summary", "description"] } }, { "term": { "name_keyword": { "value": "Cadbury chocklate milk" } } } ] } } ], "should": [ { "match": { "brand": { "query": "Cadbury chocklate milk", "boost": 2 } } } ] } } }
参数说明
boost参数可根据业务需求调整,数值越高brand匹配对最终得分的影响越大- 若brand字段为keyword类型,可将
match查询替换为term查询实现精确匹配提权
内容的提问来源于stack exchange,提问作者Bikas Katwal
相关产品推荐
相关产品推荐

