【问题标题】:Solr - return all groups that have certain value within groupSolr - 返回组内具有特定值的所有组
【发布时间】:2015-06-30 15:14:02
【问题描述】:

我有许多产品可供选择 - 比如说:

产品A 有选项abc;产品B 有选项bc

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

对于给定的模型,我如何才能检索在组内具有特定选项的所有组? (如果搜索带有选项a 的产品,它应该返回组A,带有产品A:aA:bA:c)。

我不能使用q 来执行此操作,因为它会将结果集限制为仅具有给定选项的那些产品(因此,在这种情况下,如果我使用q=field:a,我将获得组@987654342 @ 结果为A:a,没有其他结果)。不能使用group.query,因为它只返回一组与给定查询匹配的结果(如果它返回所有结果,我认为这就是我要寻找的结果)。

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

【问题讨论】:

    标签: solr


    【解决方案1】:

    当您索引项目时,您可以定义一个子项 - 用于 solr 块连接查询。

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

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

    引用文档

    块连接父查询解析器

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

    【讨论】:

    • 这当然是一个解决方案,但是它需要我重新索引我的文档。我会暂时保留这个问题,以防有其他方法(不太可能),但很高兴知道 Solr 允许这样做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多