搜索引擎中如何将动态数据(比如点击数)加入到最终排序中

方法

方法1: 进行评分扩展,增加个默认字段,如果有直接从redis读取,redis保存key是文档id,对应的为相关数量
方法2: 一个document分主document和点击子doucument,点击子doucument每天晚上更新一次,通过主document和点击子doucument关联查询,针对结果评分。这样因为点击子doucument比较小,build起索引来也非常快

 

es处理方案:

stackoverflow上的讨论:

场景举例(从stackoverflow摘取):

搜索时候,被点击的数量,在文档上的停留时间,被搜索到的数量,最终影响到搜索的评分

处理方法综述:

1、采用 parent-child documents relationship模式,主文档放静态数据,子文档动态数据

2、动态统计的数据放到动态数据库,比如:mongo,每天定时更新到子文档中

优缺点:

动态文档相对较小,更新起来也比较快,缺点还是不实时

 

如何实现Solr自定义评分查询

参考文档:http://qindongliang.iteye.com/blog/2297814

实现策略 

(1)在索引的时候把众多的业务评分计算提前计算好,存储成一个字段,然后查询的时候根据这个字段排名。 
评价:比较简单暴力,适合加权固定,不经常改变评分因素的业务使用,查询性能最高  ,更新,改变,调试评分比较麻烦 

(2)在索引的时候把众多的业务评分因子都索引成一个字段,在查询的时候动态获取各个字段评分计算后,加入总的评分从而影响最终的排名。 
评价:对动态更改评分支持比较好,查询性能稍差 

(3)对于业务的评分因素,动静分离,静态评分因子长期不变的,就全部计算完存储成一个字段,动态的也存储若干字段,最终的评分由静态业务评分+动态业务评分+相似度评分综合得出,从而影响最终的排名。 
评价:合理规划评分因素,动静分离,算是业务与技术的一个折中 
 

推荐lucence相关研究文章:

http://www.iteye.com/blogs/subjects/mylucene

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小她爹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值