es 分词后能控制分词的权重值吗?

2020-12-07 16:50:13 +08:00
 annielong
如查询“办理会员卡”,会分成“办理”、“会员卡”两个分词进行查询,“办理”可能会查询到“办理退货”,有没有什么方法可以优先查询“会员卡”这个分词。目前想到的方案是程序加关键字,先根据查询内容在 es 里面分词,然后拿分词在程序中进行关键字匹配,然后拿关键字去查询。
3043 次点击
所在节点    Elasticsearch
3 条回复
TimePPT
2020-12-07 16:57:44 +08:00
zsl199512101234
2020-12-07 17:11:52 +08:00
用不着的感觉,排序的时候词间距和连续性设置下加权就可以把办理... 会员卡...这种排到前面去了
wukangave
2020-12-08 07:42:28 +08:00
可以给文档加关键字和权重,查询的时候给文档打高分。比如建立索引的时候加如下 fields:
"keywords": {"type": "nested", "properties":{"keywords": "keyword", "weight": "long"}}
查询的时候用 function score query 给文档打分:
"function_score": {"functions": [{"field": "keywords.weight"}], "query":{"match": {"keywords.keywords": "会员卡"}}}

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/733000

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX