博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
solr搜索打分规制排序
阅读量:5999 次
发布时间:2019-06-20

本文共 1120 字,大约阅读时间需要 3 分钟。

hot3.png

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中如下配置

 

explicit
10
on
name,content
200
edismax
sum(recip(ms(NOW,pub_date),1,1,100),div(point,5632000),div(sale_count,1000000))
content
name^1.9

 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这种排序方式,已经在我的里实现,效果还算不错。

转载于:https://my.oschina.net/baowenke/blog/97524

你可能感兴趣的文章
卡特兰数
查看>>
关于SWT中的布局Layout
查看>>
ubuntu 12 安装bcm 43142无线网卡驱动
查看>>
关于fastjson转换对象失败的问题
查看>>
saltstack之(五)数据系统Grains和Pillar
查看>>
785. Is Graph Bipartite? - Medium
查看>>
114. Flatten Binary Tree to Linked List - Medium
查看>>
Windows Server 2016 Storage Replication
查看>>
c#基础概述
查看>>
1053 笨小猴
查看>>
1172 Hankson 的趣味题
查看>>
sql server的远程连接
查看>>
局部变量与实例变量
查看>>
iOS系统框架提供的两种发送Email的方法
查看>>
PHP7 错误处理
查看>>
Java字节转换类实现
查看>>
项目冲刺--第五天
查看>>
TSPL学习笔记(2):过程和变量绑定
查看>>
Java多线程学习笔记——从Java JVM对多线程数据同步的一些理解
查看>>
ASP.NET MVC 异常Exception拦截器Fillter
查看>>