在solr中使用不同的排序顺序对不同的组进行排序

8
我们正在使用solr构建电子商务应用程序,并且我们的产品按父类别中的子类别进行分组。我们使用动态排序顺序来确定产品在子类别中所属的位置,同一产品可能会出现在多个子类别中。我们使用动态字段跟踪排序顺序,每个产品根据其所属的子类别有多个排序顺序。我们需要将这些产品分组到子类别中,并使用适当的排序顺序对其进行排序。以下是一个示例,任何帮助都将不胜感激,我们正在尝试使用单个查询完成它。
- 牛仔裤 - 喇叭裤 - 产品1 - 产品2 - 紧身裤 - 产品1 - 产品3
产品具有以下排序顺序
- 产品1-喇叭裤排序顺序-10紧身裤排序顺序-1 - 产品2-喇叭裤排序顺序-3 - 产品3-紧身裤排序顺序-5
考虑每个组升序排序的预期结果
- 喇叭裤 - 产品2 - 产品1 - 紧身裤 - 产品1 - 产品3
我们希望solr对每个单独的组使用其自己的排序顺序进行排序 - group.query={subcategory:Bootcut}&group.sort=bootcutSortOrder asc&group.query={subcategory:Skinny}&group.sort=skinnySortOrder asc
solr所做的是按bootCutSortOrder升序,skinnySortOrder升序的组合排序。
在solr中是否可以使用其自己的排序顺序对每个组的各个部分进行排序?
我们正在使用最新版本的solr,并且也可以使用solr 4。

2
从(当前)SOLR源代码中的此注释 - https://github.com/apache/lucene-solr/blob/trunk/solr/core/src/java/org/apache/solr/search/Grouping.java#L295 - 以及周围的代码来看,似乎单个排序适用于所有组是一个已经认可但尚未解决的限制。如果您的分组包括所有结果(您不依赖排序返回正确的前N个结果),也许您可以通过伪字段获取/计算其他排序值,然后在显示之前重新排序。那么至少只需要一个查询,返回您所需的所有数据。 - gojomo
1个回答

1

这看起来像是一个正确的答案。另请参阅http://yonik.com/json-facet-api/。 - rleir

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接