在solr中是否可以指定文档的顺序

ruyhziif  于 2022-10-21  发布在  Solr
关注(0)|答案(2)|浏览(207)

不是一个通用排序字段,而是一个我希望按该顺序返回的文档ID列表。
示例:document_ids=[5,3,10,6]
我可以按顺序查询solr中的文档5、3、10、6吗?

h5qlskok

h5qlskok1#

使用Boost查询

您可以使用bq-param(BoostQuery)进行此操作,然后按分数排序,这是默认值。

q=id:5+OR+id:3+OR+id:10+OR+id:6&bq=id:5^4+id:3^3+id:10^2

正如您在bq参数中看到的,每个ID都会得到一个递减的提升值,直到最后一个(在您的示例中为6)不再获得任何提升。由于您按ID搜索,每个文档都会有相同的分数,因此以这种方式提升它们将得到您想要的排序顺序。
关于参数的一些参考

  • bq(Boost Query)-Solr Wiki
  • bq参数-参考指南

使用术语增强

如果您使用的是标准请求处理程序或(e)DisMax,这在任何情况下都有效

q=id:5^4+OR+id:3^3+OR+id:10^2+OR+id:6

这利用了术语提升,这在主题“使用^*提升术语”下面的in the reference documentation中进行了解释。逻辑与上述相同。

e3bfsja2

e3bfsja22#

Solr使用^=运算符支持ConstantScore,而不是boost。它基本上为任何匹配文档分配指定的常量分数,当您只关心特定子句的匹配,而不需要其他相关因素(如术语频率)时,这是理想的。因此,您可以简单地通过为查询中的id指定一个递减的常量分数来获得所需的顺序。

q=id:(id1^=4 OR id2^=3 OR id3^=2 OR id4^=1)

这将为id=id1的文档分配一个恒定的分数4(因此它将排在第一位),为id=id 2的文档分配3,以此类推。

相关问题