【问题标题】:SOLR boost query order is wrongSOLR boost查询顺序错误
【发布时间】:2020-07-31 05:45:47
【问题描述】:

我想从 SOLR 检索一些文档并将提升传递给字段,以便它们按照我请求它们的顺序返回(分别是 Web 请求请求它们)。因此,我为所需的 id 添加了提升:

q=myfield:"9125129"^10 OR 
  myfield:"9125417"^9 OR 
  myfield:"9124611"^8 OR 
  myfield:"9126980"^7 ...
fl=myfield
wt=csv

不幸的是,这并没有按所需顺序返回文档:

myfield
9125129
9125417
9126980
9124611

如果我将查询更改为

q=myfield:"9125129"^9 OR 
  myfield:"9125417"^8 OR 
  myfield:"9124611"^7 OR 
  myfield:"9126980"^6 ...
fl=myfield
wt=csv

(仅供测试),返回正确的顺序:

myfield
9125129
9125417
9124611
9126980

所以看起来 SOLR 不喜欢两位数的提升值?但根据规范,这应该不是问题。那么这里的实际问题是什么?我如何请求超过 10 个文档的提升字段?

使用的 SOLR 版本:4.10.4

【问题讨论】:

  • debugQuery=true 附加到您的请求中 - 这将为您提供所有必要的调试信息。当您更改提升值时,如果分数不是恒定的,它可能只是切换文档的位置 - 由于您使用的是q,因此将根据查询词为每个文档计算分数,并且每个文档的分数可能不同(例如,如果它们分布在多个节点上,因为每个节点可能有不同数量的文档)。附加 debugQuery=truedebug=querydebug=all 在较新版本的 Solr 中)将显示分数计算

标签: solr solr-boost


【解决方案1】:

我发现一个文档说明:“如果需要绝对排序,可以使用非常高的提升。” 事实上,如果我分配了非常高分布的提升值(例如 1000、900、80、7),那么排序顺序是正确的。 但我想这是开放的讨论,这是否是一个好的做法,应该这样做。似乎有点像猜测和使用 SOLR 来做一些它不是为它设计的东西。

https://cwiki.apache.org/confluence/display/solr/SolrRelevancyCookbook#SolrRelevancyCookbook-BoostingRankingTerms

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-22
    • 1970-01-01
    • 1970-01-01
    • 2020-04-11
    • 2011-11-23
    • 1970-01-01
    • 2014-10-07
    • 1970-01-01
    相关资源
    最近更新 更多