我想使用ES用来做内容推荐:给每个内容打上n个标签,然后根据用户喜欢的标签进行匹配查询。标签匹配没什么问题,问题出现在了排序上。请问博友们知不知道ES能否支持这样查询?
需求:
内容1,含有标签 A/B/C/D/E/F/G
然后我使用 A/B/Z/N 标签去查询,肯定是能匹配上内容1的。
但是我想在查询时,给标签A 0.5分,标签B 0.6分,标签Z 1.1分,标签N 0.1分
然后查询结果的排序根据匹配到的标签分之和进行排序
内容1,含有标签 A、B、C
内容2,含有标签A、C、D、N
如果查询 A=0.5分、B = 0.1分、C = 0.2分、N = 3分区查询
那么内容1 的排序分就是 0.5+0.1+0.2 = 0.8分
内容2 的排序分就是0.5 + 0.2 + 3 = 3.7分
虽然内容1 标签匹配的数量较多,但是显然内容2的排序分更高,显示靠前
请问这样ES查询能直接实现吗?
elasticsearch? 有用 explain 查看打分详情吗
对,elasticsearch,我不知道这样能不能支持这样查询
@廊虞: 可以,但是一定要保证它在计算分值时,你的权重影响到了;建议你还是先用 explain 分析一下,然后重构 DSL 语句