我有一个solr文档列表,它将有2个字段groupId和assetId。我想要的是,列表的顺序应该是所有的groupId文档在一起,并在其中,它应该根据资产编号放置。这个场景很容易通过修改排序参数来实现。
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的用户。是否有可能在排序参数中以任何方式提到提升,以指定排序字段的哪个值更重要?
我当时已经解决了这个问题。我在排序参数中使用了Solr的函数查询概念。查询({! v = 3 1 "})
从概念上讲,它就像下面的3和1是我的groupId,需要在groupId的其余部分之上。由于我们已经添加了另外两个排序参数groupId和assetId,它基本上会提升这两个groupId,然后在每个groupId中,它将进一步对assetId进行排序。
sort=query({!v="groupId:3^10.0 groupId:1^5.0"}) desc, groupId asc,assetId asc
注意:我不记得确切的语法了。因此,请深入了解函数查询概念并获得确切的语法。