漫谈搜素引擎的排序模型

万变不离其宗,搜索引擎的搜索结果排序算法模型,可以抽象为计算每一个doc的p(d|q),

利用朴素贝叶斯算法原理,p(d|q)=p(q|d)*p(d)/p(q),p(q)对于每一个doc都是一样的,所以最终的排序打分是p(q|d)*p(d),p(q|d)是query和doc的匹配程度,p(d)是每个doc的本身的打分,而doc本身的打分可以定义的角度非常多,和诸多的因素有关。

Lucene默认的排序算法是特征向量空间的TF-IDF模型,

 score(q,d)= coord(q,d)·queryNorm(q)·∑( tf(t in d)·idf(t)^2·t.getBoost()·norm(t,d) )

公式这么一大串,其实可以概括为query和doc的相关性的匹配,以及boost(boost可以应用于doc上),lucene这种模型的缺点是精确度不高。对于电商搜索方面的排名规则,可以把doc方面的各个维度(人气、热度、作弊、卖家因素、商品因素、、)的参数综合权重设置到doc的boost中,来影响doc的boost分数。

还有一种相关性的基于概率模型的BM25模型,在Lucene4中已经有提供,BM25的公式这里就不细说了,感兴趣的可以去搜一下。

在网页中排序,除了query和网页的相关性外,还网页的本身的pagerank有关系。

在solr中的一些影响boost排序做法,可以使用edismax(pf,qf)、bf查询的配置来影响boost打分。

有了query和doc的相关性以及doc本身的因素打分,在实际应用中,如何融合这些影响搜索排序的因素,一种做法是人工进行对各种因素进行评估,按照权重把这些因素进行相加。对于各种因素的组合,针对策略不断的细化,当规模达到一定程度时,人工的方式已经很难对这些因素的权重进行调整。于是另外一种做法是采用机器学习的方式LTR,结合用户的搜索和点击行为,进行模型学习,根据模型自动的进行因素权重调整(关于LTR后续章节再详细介绍)。

由此可见,无论是搜索,还是推荐、广告投放,都会涉及排序,排序的做法越来越多的利用机器学习的方式进行建模,这几个方面都已趋于融合。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值