继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

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

喵喔喔
关注TA
已关注
手记 508
粉丝 103
获赞 606

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

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP