我有很多产品可供选择 - 让我们说:
产品A
包含选项a
,b
和c
;产品B
包含选项b
,c
。
在我的Solr文档中,这些产品存储为:A:a
,A:b
,A:c
,B:b
,B:c
(因此对于这种情况,我是5个产品存储在Solr中)。我正在对这些产品进行分组(因此我有两个小组 - A
和B
)。
对于给定的模型,如何检索在组内具有特定选项的所有组? (如果使用选项a
搜索产品,则应返回包含产品A
,A:a
,A:b
)的组A:c
。
我无法使用q
执行此操作,因为它会将结果集限制为仅提供选项的产品(因此,在这种情况下,如果我执行q=field:a
,我会获取结果为A
的组A:a
而没有其他结果)。无法使用group.query
,因为它只返回与给定查询匹配的一组结果(如果它返回了所有结果,我认为这将是我正在寻找的内容)。
我还有其他方法可以做到这一点吗?
答案 0 :(得分:1)
为项目编制索引时,可以定义子项 - 用于solr块连接查询。
https://cwiki.apache.org/confluence/display/solr/Other+Parsers
您可以使用块连接查询查找某些父母的子女或某些子女的父母。
引用文档
阻止加入父查询解析器
此解析器接受与子文档匹配的查询并返回其父项。此解析器的语法类似:q = {!parent which =}。参数all参数再次是一个只匹配父文档的过滤器;在这里,您将定义用于将文档标识为父级的字段和值。 someChildren参数是一个匹配部分或全部子文档的查询。请注意,someChildren的查询应仅匹配子文档,否则可能会出现异常。