Solr - 返回组内具有特定值的所有组

时间:2015-06-30 15:14:03

标签: solr

我有很多产品可供选择 - 让我们说:

产品A包含选项abc;产品B包含选项bc

在我的Solr文档中,这些产品存储为:A:aA:bA:cB:bB:c(因此对于这种情况,我是5个产品存储在Solr中)。我正在对这些产品进行分组(因此我有两个小组 - AB)。

对于给定的模型,如何检索在组内具有特定选项的所有组? (如果使用选项a搜索产品,则应返回包含产品AA:aA:b)的组A:c

我无法使用q执行此操作,因为它会将结果集限制为仅提供选项的产品(因此,在这种情况下,如果我执行q=field:a,我会获取结果为A的组A:a而没有其他结果)。无法使用group.query,因为它只返回与给定查询匹配的一组结果(如果它返回了所有结果,我认为这将是我正在寻找的内容)。

我还有其他方法可以做到这一点吗?

1 个答案:

答案 0 :(得分:1)

为项目编制索引时,可以定义子项 - 用于solr块连接查询。

https://cwiki.apache.org/confluence/display/solr/Other+Parsers

您可以使用块连接查询查找某些父母的子女或某些子女的父母。

引用文档

阻止加入父查询解析器

此解析器接受与子文档匹配的查询并返回其父项。此解析器的语法类似:q = {!parent which =}。参数all参数再次是一个只匹配父文档的过滤器;在这里,您将定义用于将文档标识为父级的字段和值。 someChildren参数是一个匹配部分或全部子文档的查询。请注意,someChildren的查询应仅匹配子文档,否则可能会出现异常。