5

我有一对多值索引字段,author 和 author_norm,并且我使用https://wiki.apache.org/solr/HierarchicalFaceting#Indexed_Terms中描述的模式为它们创建了一个分层方面字段。构面值如下所示:

0/Blow, J
1/Blow, J/Blow, Joe
1/Blow, J/Blow, Joseph
1/Blow, J/Blow, Jennifer
0/Smith, M
1/Smith, M/Smith, Michelle
1/Smith, M/Smith, Michael
1/Smith, M/Smith, Mike

作者与文章记录相关联,在大多数情况下,一篇文章会有很多作者。这意味着对于返回 100 多篇文章的 Solr 查询,可能会有 1000 多位作者代表。

我的问题是,当我向用户显示此层次结构时,由于我的 facet.limit 和 facet.mincount 设置为正常值,我没有完整的第二级值集,即第二级我的等级制度将在某一点被切断。我会有这样的事情:

  • 吹,J (30)
    • 吹,乔 (17)
    • 约瑟夫·布劳 (9)
  • 史密斯,米 (22)
    • 米歇尔·史密斯 (14)
    • 迈克尔·史密斯 (6)

我还想在此列表中包含“Blow, Jennifer (4)”和“Smith, Mike (2)”条目,但由于 mincount 截止值为 5,因此它们没有在响应中返回。所以我最终得到了令人困惑的显示(17 + 9 != 30 等)。

一种选择是在每个二级列表的底部放置一个小“(更多)”链接,并通过 ajax 获取完整集。我对这个解决方案并不感到疯狂,因为它要求用户工作/点击的次数超出了他们真正应该做的,还因为我无法控制初始 2 级列表的长度;有时它会是 3 个名字 +“(更多)”,有时是 2 个甚至 1 个。这太丑了。

我可以为我的分层构面字段设置 mincount=1 和 limit=-1,但这太疯狂了,因为对于大型查询(100k 次点击),我将获取 100k+ 的值,我不需要。我只需要前 N 个 1 级值的完整的 2 级值集。

因此,除非有人有更好的建议,否则我假设我需要进行某种后续查询。所以毕竟,这就是我真正要问的:有没有办法在单个后续查询中获取这些 2 级值。给定一个初始的 solr 响应,我如何才能获得我的层次结构的前 N ​​个 1 级值的所有 2 级排列?

谢谢!

PS,我正在使用 Solr 4.0。

4

1 回答 1

0

您可以修改枢轴中任何级别的 mincount:

facet.pivot=fieldA,filedB&f.fieldA.limit=3&f.fieldB.limit=-1

当两个字段相同时,问题就开始了,facet.pivot=fieldA,filedA在这种情况下,我可能会创建一个 fieldA 的副本作为 fieldB

于 2014-06-17T21:48:09.347 回答