Solr为每个子集排序不同的标准

时间:2013-03-26 02:38:20

标签: apache sorting solr

我们正在使用Apache SOLR进行全文搜索。我们对搜索结果进行排序有特定要求 - 基本上在查询数据时,我们需要2组数据 - A和B,但每组都应该有自己的排序标准,我们不能进行2次不同的调用。我们可以使用OR条件获得2组,但是我们如何对每组进行不同的排序?为了说明,如果:

设置A = {3,1,2}  设置B = {8,5,9}

因此,预期的响应可以设置A按升序返回{1,2,3},但是设置B可以按降序返回{9,8,5}

我相信SOLR中的默认排序将对整个结果集进行排序。任何建议或如果问题不明确,请告诉我。

1 个答案:

答案 0 :(得分:0)

您可以使用FieldCollapsing

来实现此目的

你可能需要做更多的工作 - 即有一个显示顺序字段(可能是一个整数),以便Solr知道它需要排序的一个字段。

接下来你可以使用这样的查询 -

&q=*&group=true&group.field=set&group.sort=display_order

我建议将这样的逻辑保留在Solr之外,它并不意味着可以替代关系数据库,并且让它做复杂的SQL操作(虽然有些可能)会变得棘手。

顺便说一下,Solr的JIRA中有一个open issue来处理多个查询的批处理。这意味着,当它合并到一个版本中时,你可以在一次调用Solr时触发n个不同的查询来获取这些集合。

如果您希望让SOLR为您执行此任务,可以在JIRA卡中找到该补丁,您可以为自己创建一个版本,让我们都知道它是怎么回事:)