[solr ] 在solr中查询时如何改变它对记录的评分?
topcat
2011-03-31
Hi,同学们,有没有人知道solr根据socre排序的时候我怎样设置可以改变socre的值呀?
我是否可以给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功能,除非是为了学习 |