如何在分面排序后维护行映射?如果我在 1 个方面排序,其他列值不会相应排序

How can I maintain the row mapping after sorting on facets? If I sort on 1 facet, other column values don't get sorted accordingly

我是 SOLR 的新手,我正在尝试编写一个查询,其中包含一些即使在排序后也应该链接在一起的方面。

例如,我的数据库包含 id 和 name 字段(以及其他属性)。 我在我的代码中添加了 2 个 facetfields

sq.setFacet(true);
sq.setFacetMinCount(1);
sq.addFacetField(ID);
sq.addFacetField(NAME);

我需要对 ID 和 NAME 进行排序。 目前,当我对查询进行排序时,它会按升序分别对 ID 和 NAME 进行排序。我尝试对 COUNT 和 INDEX 进行排序,但两者都分别对字段进行排序。

我的数据库 table 看起来像:

ID      NAME
1002    Spring
1001    Winter
1003    Summer

我得到的结果:

   BLOCK [1001(1),1002(1),1003(1)]
   BLOCK [Spring,Summer,Winter]

但正如我们所见,即使排序单独进行,结果中字段之间的映射也会丢失。我希望是这样的:

BLOCK[1001:Winter,1002:Spring,1003:Summer]

这将帮助我获取相应名称的正确 ID(并为 table 中的每个条目保留正确的行映射)。

有没有一种方法可以在排序后保持行映射?

提前致谢!

每个方面的顺序都是独立于其他方面的,因此如果您将 id 和名称存储在不同的字段中,则不能假设两者都在同一行中。通过计数,只有当每个结果编号不同时才会出现这种情况。 (所以如果你有 3 个来自夏天,2 个来自冬天,1 个来自 spring,它最终将在 2 个方面具有相同的顺序)。

在你的情况下,我通常做了这两件事之一,只存储 Id 并从数据库中获取名称,或者实际上,缓存在我的应用程序中的哈希表。另一种是将 facet 索引为连接 ex:WINTER|ID (Spring|1002) 并按“|”拆分的字段再次在 solr 客户端中。