我有一份solr文档列表,其中包含2个字段groupId和assetId。我想要的是列表的顺序应该是所有groupId文档,并且在其中,它应该根据assetId no放置。通过修改排序参数可以轻松获得此方案。
sort=groupId asc,assetId asc
但接下来我想要的是,很少有groupId应该被提升并首先显示出来。
所以我的问题是如何在排序参数中提及这一点,即与其他人相比,提升一些群体。每个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的用户。是否有可能在sort param中提及boost,以指定sort字段的哪个值更重要?
答案 0 :(得分:1)
那时我解决了这个问题。我在排序参数中使用了Solr的函数查询概念。查询({V ="!3,1"})
从概念上讲,就像下面的3和1是我的groupId,它们必须高于groupId的其余部分。由于我们添加了另外两个params参数groupId和assetId,它基本上会提升这两个groupId,然后在每个groupId中,它将进一步对assetId进行排序。
sort=query({!v="groupId:3^10.0 groupId:1^5.0"}) desc, groupId asc,assetId asc
注意:我不记得确切的语法。因此,请深入了解函数查询概念并获得准确的语法。