Sorting Solr 3.6中的条件排序

Sorting Solr 3.6中的条件排序,sorting,solr,Sorting,Solr,我们正在运行Solr3.6,并试图对结果集应用条件排序。为了澄清,数据是一组出价,我们希望添加按当前用户出价排序的选项,因此它不能作为常规排序(因为运行查询的每个用户的出价都不同) 结果集中的文档包括“CurrentUserId”和“CurrentBid”字段,因此我认为我们需要以下内容来排序: 排序=((CurrentUserId=12345)?CurrentBid:0)描述 这只是伪代码,但其思想是,如果Solr中的currentUserId与用户Id匹配(本例中为12345),则按Curr

我们正在运行Solr3.6,并试图对结果集应用条件排序。为了澄清,数据是一组出价,我们希望添加按当前用户出价排序的选项,因此它不能作为常规排序(因为运行查询的每个用户的出价都不同)

结果集中的文档包括“CurrentUserId”和“CurrentBid”字段,因此我认为我们需要以下内容来排序:

排序=((CurrentUserId=12345)?CurrentBid:0)描述

这只是伪代码,但其思想是,如果Solr中的currentUserId与用户Id匹配(本例中为12345),则按CurrentBid排序,否则,只使用0

使用类似于以下查询的方法,执行按查询排序可能是实现这一点的方法(或者至少是解决方案的一部分):

http://localhost:8080/solr/select/?q=:&sort=query(CurrentUserId:10330和CurrentBid:[1到*])+desc

但这似乎对我不起作用,并导致以下错误:

排序参数无法作为查询进行分析,并且不是索引中存在的字段:…

指示查询函数可以用作Solr 1.4以后的排序参数,因此这似乎应该可以工作


对于如何实现这一目标的任何建议,我们将不胜感激。

根据您提供的Solr文档链接

通过参数取消引用$otherparam或通过“v”直接指定LocalParams中的查询字符串,可以支持任何类型的子查询

因此,根据这些示例和您的查询,我认为以下一项或两项都可以:

http://localhost:8080/solr/select/?q=:&sort=query($qq)+desc&qq=(当前用户ID:10330和当前出价:[1到*])


http://localhost:8080/solr/select/?q=:&sort=query({v='CurrentUserId:10330和CurrentBid:[1 TO*]'})+desc

有效,使我更接近解决方案。仍然需要弄清楚投标金额中的因素是如何影响排序顺序的,但我现在将这个答案标记为接受,因为这是一个良好的开端。谢谢你的帮助。