Solr - 需要在排序参数中提升

时间:2015-08-19 10:36:45

标签: sorting solr liferay-6 solr4 solr-boost

我有一份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字段的哪个值更重要?

1 个答案:

答案 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

注意:我不记得确切的语法。因此,请深入了解函数查询概念并获得准确的语法。