[solr ] 在solr中查询时如何改变它对记录的评分?

topcat 2011-03-31

Hi,同学们,有没有人知道solr根据socre排序的时候我怎样设置可以改变socre的值呀?
现在有个需求,如果二个记录R1与R2分别有A,B,C,三个字段

A B C
R1 匹配2次 匹配3次  匹配2次 
R2 匹配1次  匹配2次  匹配6次 

 

我是否可以给A,B,C设置不同的权重以改变R1与R2的排序顺序?

 

flounder 2011-03-31
给每个Query设置不同的boost(默认为1),比如aQuery.setBoost(1.2),那aQuery的得分会乘以1.2,最好范围在1.1~1.9之间
topcat 2011-03-31
感谢你的回复!

是设置query boots还是file boots?
另外我如果用dismax的话,这个socre是取的一个记录中所有field中socre最高的那个
这样的话设置boots对整个记录的socre的影响就起不了决定因素了
如下:
http://localhost:8983/solr/select?q=上海&fq=&fl=*%2Cscore&qt=dismax&debugQuery=on&qf=title^1.0%20subject^1.0%20description^2.0&tie=0.01
如果使用
http://localhost:8983/solr/select?q=title:上海subject:上海0description:上海^2.0&debugQuery=on
那么这时的socre就是所有field的socre的和
难道我只能使用下面这种方式了?
flounder 2011-03-31
是Query的boost,不想在打分中考虑的因素可以setBoost(0),这样就行了,solr很久不用了,现在用核心的lucene
topcat 2011-04-01
朋友,谢谢你的回复!
但是solr中采用dismax的查询,Query的boost对排序起不到决定性的影响,因为dismax查询计算的score是计算的所有field的score的最大值*tie
如果采用standard的查询的话计算score是用的所有的field的score的和值,这样设置Query的boost好像才有用。
这两种查询方式的计算score的方式为什么会不一样,他们各自的使用场景应该是怎样的呢?还请不吝赐教!!
flounder 2011-04-02
呵呵,那我也不会了,你应该找找看solr计算分数的公式,里面肯定会预留你这样的需求的
captainyuming 2011-07-11
哎。。。
topcat 你的做法是靠谱的,solr支持。没有必要为这个需求改solr的similarity功能,除非是为了学习
Global site tag (gtag.js) - Google Analytics