没有真正的最高分.
当Lucene得分时,它基本上将一组分数相加,得出总得分.
例如:
假设我搜索
A OR B.这个查询被分解为其组成部分 -A和B.使用子记分器独立搜索该查询的每个部分,并给出查询的相关部分的给定分数.如果文档包含A和B,则分数将是来自两个子分数的分数的组合.
因为可以有很多次级得分手,所以总得分可以大于1.
特定命中的得分是绝对的,这意味着它只能用作与同一搜索的最高得分的比较.不同搜索的得分不能直接比较.
如果您确实需要介于0和1之间的值,则可以根据其值与搜索中的最高分数之比来对每个分数进行标准化.这将为您提供相当于百分比的分数.但是,这些百分比仍然无法在搜索范围内进行比较.
分数的最大值取决于正在执行的查询.要找出给定查询的最高分数,您可以通过fl参数请求分数字段,需要明确请求.
Ex Req: http://server:7983/solr/select/?q=term&fl=*,score
Run Code Online (Sandbox Code Playgroud)
在你的回复中寻找maxScore ="xx.xxxx",这将高于/低于1.0,具体取决于查询,结果,相关性......
Ex: <result name="response" numFound="29" start="0" maxScore="2.1740298">
Run Code Online (Sandbox Code Playgroud)
重要的是要记住得分本身的价值并不能提供太多意义,但是当比较文档的相对分数和查询的maxScore时,它提供了价值.例如,如果文档#1的得分是1.9而文档#27的得分是0.8,那么当maxScore是"2.1740298"时,文档#1远比文档#27好得多.
以下影响得分,
除了这个功能之外
会影响分数的计算方式.SolrRelevancy提供了一些解释.更详细的解释可以在这里找到Lucene Similarity你可以启用调试选项来查看如何计算得分,
http://server:7983/solr/select/?q=term&fl=*,score&debugQuery=on
Run Code Online (Sandbox Code Playgroud)
例如: 2.1740298 = fieldWeight(文本:210中的"mmdci bldleg 02"),乘积:1.7320508 = tf(phraseFreq = 3.0)13.388552 = idf(文本:mmdci = 812 bldleg = 264 02 = 6220)0.09375 = fieldNorm(field = text,doc = 210)
对于Lucene:
使用TopDocs.getMaxScore().按相关性进行默认排序时,返回所有匹配的最高分数.如果您按相关性以外的字段进行排序,则需要设置doTrackScores(true)和doMaxScore(true).
| 归档时间: |
|
| 查看次数: |
6421 次 |
| 最近记录: |