0

我们正在使用 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 中的默认排序将对整个结果集进行排序。任何建议或如果问题不清楚,请告诉我。

4

1 回答 1

0

您可以使用FieldCollapsing实现此目的

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

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

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

我建议将诸如此类的逻辑保留在 Solr 之外,它并不意味着可以替代关系数据库,并且让它执行复杂的 SQL 之类的操作(虽然有些是可能的)将会很棘手。

顺便说一句,在 Solr 的 JIRA 中有一个未解决的问题,它解决了多个查询的批处理问题。这意味着,当它被合并到一个版本中时,您可以在一次调用 Solr 时触发 n 个不同的查询来获取这些集合。

如果您希望 SOLR 为您执行此任务,JIRA 卡中提供了补丁,您可以为自己创建一个构建并让我们都知道它是如何进行的 :)

于 2013-03-26T02:59:21.283 回答