为了账号安全,请及时绑定邮箱和手机立即绑定

Solr设定不同字段的权重,根据相关度和业务字段综合排序搜索

标签:
Java

1. Solr文本匹配不同字段的相关度权重设置需要做如下设置:

1)启用edismax选项,在检索url上添加defType=edismax参数 
2)设置q参数为搜索关键词,这里不要再写搜索表达式了 
3)设置qf参数,指定不同字段的权重,例如:title^10 keywords^10 content^1 表示title字段的权重设置为10,keywords为10,content权重设置为1 

2. Solr非检索字段权重设置,需要设置查询的bf(boost function)参数,solr中提供了几十个数学函数可以做权重提升的函数设置,下面是一个简单的例子:

sum(sum(if(setTop,10000,0),sqrt(pv)),product(0.00001,sub(30,div(ms(NOW,createTime),86400000))))

说明如下:

1)这个函数中首先对是否指定做判断加权:if(setTop,10000,0) 
2)Sqrt(pv)对pv做开方 
3)product(0.00001,sub(30,div(ms(NOW,createTime),86400000)) 30 - 创建时间距离现在的天数 然后乘以 0.00001 
4)使用sum函数对1,2,3三部分的加权做求和 

Solr权重搜索相关资料: 
http://wiki.apache.org/solr/QueryElevationComponent 
http://wiki.apache.org/solr/FunctionQuery#Sort_By_Function 
http://wiki.apache.org/solr/SolrRelevancyFAQ#How_can_I_boost_the_score_of_newer_documents

原文链接:http://outofmemory.cn/java/solr/search-function-query-effect-result-order

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消