我有一对多值索引字段,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。