黑马程序员技术交流社区

标题: 【合肥中心】solr搜索打分规制排序 [打印本页]

作者: 项老师    时间: 2018-6-28 15:01
标题: 【合肥中心】solr搜索打分规制排序
【合肥中心】solr搜索打分规制排序

solr使用了Lucene的内核,也继承了Lucene的打分规则,关于Lucene打分规则可以参考如下博客

http://blog.chenlb.com/2009/08/lucene-scoring-architecture.html

Solr内改变打分规则有几种形式:

1.配置solr的solrconfig.xml中edismax,来改变Boost打分规则

2.在solr的schema中增加一个字段,该字段专门用于排序

3.自写一个solr的评分规则。

一般简单的应用1和2就能满足。

举一个例子,电商类网站(比如淘宝)的商品搜索:

1.在商品名称上出现搜索关键字排序靠前,而内容的次之

2.对多皇冠的买家排序靠前等

3.对近期发布的商品排序靠前

4.对最近销售多商品靠前

综上获得一个综合排名

在solrconfig.xml的SearchHandler中如下配置

[AppleScript] 纯文本查看 复制代码
<requestHandler name="standard" class="solr.StandardRequestHandler" default="true" >
        <lst name="defaults">
                <str name="echoParams">explicit</str>
                <str name="rows">10</str>
                <str name="hl">on</str>
                <str name="hl.fl">name,content</str>
                <str name="f.content.hl.fragsize">200</str>
                <str name="defType">edismax</str>
                <str name="bf">
                        sum(recip(ms(NOW,pub_date),1,1,100),div(point,5632000),div(sale_count,1000000))
                </str>           
                <str name="pf">
                        content
                </str>           
                <str name="qf">
                        name^1.9
                </str>
        </lst>
</requestHandler>

bf用函数计算某个字段的权重,如上例子中pub_date发布日期的权重,point比如诚信指数,sale_count销售数量

bf内字段必须是索引的,bf的函数查看solr api文档 http://wiki.apache.org/solr/FunctionQuery

pf查询字段,这样在schema不用制定默认字段

qf对默认查询增加权重比值,比如标题是content的1.9倍,值越大权重越大

这样查询就会计算如下的一个综合评分值了


对于其他排序,比如说价格排序,在schema增加price字段,然后查询是增加sort=price desc就可以了


solr这种排序方式,效果还算不错。



作者: O-limin    时间: 2018-6-28 16:37

作者: 项老师    时间: 2018-6-28 16:38

作者: 黑马啸西风    时间: 2018-6-28 16:40

作者: hguilin    时间: 2018-6-28 16:46
666
作者: 奥斯托洛夫斯基    时间: 2018-6-28 16:48

作者: TomGe    时间: 2018-6-28 16:50
{:5_229:666
作者: 朱浩    时间: 2018-6-28 16:50

作者: 皖哥哥    时间: 2018-6-28 16:51
给力点赞,一直很有收获
作者: 美美就是美    时间: 2018-6-28 17:08

作者: 鸟语花香    时间: 2018-6-28 17:36

作者: 蔡超凡    时间: 2018-6-29 21:56
感谢分享,谢谢大佬,给你点赞~~~~~~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2