1

我有一个 solr 文档列表,其中包含 2 个字段 groupId 和 assetId。我想要的是列表的顺序应该是所有 groupId 文档在一起,并且在其中,它应该根据assetId no 放置。通过修改排序参数可以轻松实现此场景。

sort=groupId asc,assetId asc

但我接下来想要的是,应该首先提升和显示几个 groupId 。

所以我的问题是如何在排序参数中提及这一点,即与其他组相比,提升一些组ID。并且每个 groupId 部分将根据assetId 值在内部进行排序。

通过示例:

Solr 中的数据:

GroupId AssetId
 1      A
 2      A
 1      C
 1      B
 3      C
 3      B
 2      C
 3      A
 2      B

所以

sort=groupId asc,assetId asc

会导致

GroupId AssetId
1       A
1       B
1       C
2       A
2       B
2       C
3       A
3       B
3       C

而我需要的是 groupId 3 和 1 应该被提升以在 2 之前显示它们。在每个 groupId 3、1 和 2 中的排序应该是assetId。

GroupId AssetId
3       A
3       B
3       C
1       A
1       B
1       C
2       A
2       B
2       C

仅供参考,我将 Solr 与 Liferay 一起使用,需要提升的 groupId 是一个动态数字,即它取决于当前登录到 liferay 的用户。是否可以在排序参数中提及提升以指定排序字段的哪个值更重要?

4

1 回答 1

2

我当时已经解决了这个问题。我在排序参数中使用了 Solr 的函数查询概念。查询({!v="3,1"})

从概念上讲,就像下面一样,其中 3 和 1 是我的 groupId,它们必须高于 groupId 的其余部分。由于我们添加了另外两个排序参数 groupId 和 assetsId,它基本上会提升这两个 groupId,然后在每个 groupId 中,它会进一步排序 assetsId。

sort=query({!v="groupId:3^10.0 groupId:1^5.0"}) desc, groupId asc,assetId asc

注意:我不记得确切的语法。所以请深入挖掘函数查询的概念并获得确切的语法。

于 2016-03-19T00:58:03.613 回答