【发布时间】:2011-01-14 04:17:29
【问题描述】:
我一直在想办法在 solr 中用层次结构实现分面,但不知道如何在我的情况下做到这一点。我已经阅读了几篇关于在 solr 中进行层次结构的文章以及补丁 64 和 792 中的解决方案。我遇到的主要问题是我有可以属于层次结构的多个分支的实体。我的数据的当前形式是一个用户文档,其中包含国家、州和城市的 MVA。
以地理层次结构为例,人们可以将其服务列出到城市级别。一个人可以服务于整个阿拉巴马州,但只能服务于佐治亚州的某些城镇。现在,州级的分面计数计算了为阿拉巴马州为 1 和乔治亚州为 1 的地区服务的不同个人,当扩展到城市级别时,每个城市都有一个计数(换句话说,城市的总和)计数不一定等于状态计数,因为计数不是互斥的)。
美国(1)格鲁吉亚(1)亚特兰大(1)阿拉巴马州(1)
哥伦布(0)
雅典(0)手机(1)
伯明翰(1)
亨茨维尔(1)
我正在挂断的部分是在面对城市时,我无法知道他们属于哪个州,因为用户在阿拉巴马州和乔治亚州都有列出,我想不出一种联系方式彼此的属性。如果 solr-64 支持同一文档的多个分支,例如 US/Alabama/Mobile/ 和 US/Georgia/Atlanta/,它可能会起作用。到目前为止,我还不能让它与夜间构建一起编译,所以我有点卡住了。
有没有人有更好的方法来做到这一点?
【问题讨论】:
-
澄清一下,您是每个城市都有一个文档,还是每个服务都有一个文档,其中列出了文档中的所有城市和州?
-
所有建议都适用于仅属于 1 个分支的用户。发生的情况是,如果我发出对 facet.field=city 的查询,那么两个州的城市都会显示,无法根据其父州对它们进行分组。即使我转动或分组,它认为所有城市都属于每个州。如果我像 rfreak 建议的那样放置一个分隔符,我可以重建树,但它似乎需要大量客户端处理,因为它不会自动将计数汇总到状态级别。