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