我正在从SOLR 4.10.2迁移到SOLR 7.1 .
一切似乎进展顺利,除了一件事:为结果文件返回的分数给出了不同的分数 .
核心使用模式 . 这是我正在搜索的字段的架构信息:
<field name="IDX_Company" type="text_general" indexed="true" stored="false" multiValued="true" />
<field name="Company" type="string" indexed="true" stored="true"/>
<copyField source="Company" dest="IDX_Company"/>
搜索maxrows = 750时,字段:*,得分
IDX_Company :(猫和划痕)
SOLR 7.1:最高得分6.95,最低得分6.28
SOLR 4.10.2:最高得分8.63,最小值0.91
IDX_InsuredName :(猫和刮伤和发烧)
SOLR 7.1最高得分为12.99,最小值为11.25 SOLR 4.10.2最大值3.97,最小值为0.77
查看值的范围如何不同(7.1中的范围不要低至0.x)另请注意,当我在7.1中的搜索项中添加一个单词时,最高分数会翻倍 . 最重要的是,4.10.2中的范围重叠 - 但7.1不重叠 .
更多信息,向您展示我如何使用此信息,以及为什么这会导致问题 .
我得到了一个像“bobs cabinetry”这样的公司名称和另一个“所有美国科技企业”
我按公司名称运行两次SOLR查询,我称之为1-AND,1-OR,2-AND,2-OR .
IDX_Company:(bobs AND cabinetry) &f=*,score,requestid:"1-AND"
IDX_Company:(bobs OR cabinetry) &f=*,score,requestid:"1-OR"
IDX_Company:(all AND american AND tech AND enterprise) &f=*,score,requestid:"2-AND"
IDX_Company:(all OR american OR tech OR enterprise) &f=*,score,requestid:"2-OR"
我将结果组合在一起按降序排序,然后取前750行 . (requestid让我知道结果来自哪个查询)
由于分数范围的变化,排序将所有美国科技企业行推到结果的顶部(因为没有重叠),并且当前750名被采取时所有的bobs木工都从结果中删除 .
是否有一些配置设置我可以更改以使分数计算像4.10.2中那样运行?
或者是其他东西?
1 回答
对于初学者来说,Solr6中的相似性已经改为BM25,所以这应该是可以做的事情 . 如果你想尽可能多地获得类似于4.x的分数,我会:
使用tdidf相似度,见here
查看发行说明,看看其他一些默认值是否发生变化,对分数有一定影响 . 在请求中使用debug和explain参数来获取有关如何计算结果的详细信息