【问题标题】:Multiple Filter Queries(fq) in SOLRSOLR中的多个过滤器查询(fq)
【发布时间】:2014-06-20 15:53:36
【问题描述】:

我的 SOLR 索引为:

{'year':2002
'user_entries':['user1']},
{'year':2003
'user_entries':['user2']},
{'year':2002
'user_entries':['user1']},

预期结果

{facet_fields:{2002:{'user1':2}, 2003:{'user2':1}}}

我可以使用 fq=year:2002 来提取 user_entries 上的构面,以提取每个用户在 2002 年的条目计数为

/solr/rss/select?q=:&fq=year:2002&wt=json&indent=true&facet=true&facet.query=year:2002&facet.field=user_entries

但我想从 2002 年到 2010 年分别提取每年的 user_entries,而不是全部加起来。

目前的方法:

1. solr/rss/select?q=*:*&fq=year:2002&wt=json&indent=true&facet=true&facet.query=year:2002&facet.field=user_entries 2. solr/rss/select?q=*:*&fq=year:2003&wt=json&indent=true&facet=true&facet.query=year:2003&facet.field=user_entries...

所以我可以有一个 single 多个过滤器查询,而不是 multiple 查询,我可以使用它来提取单个年份数据,而无需像使用默认 OR 操作那样将它们相加?

【问题讨论】:

    标签: solr


    【解决方案1】:

    如果您使用的是 Solr 4.0 或更高版本,则可以使用pivot facets

    ?q=*:*
    &facet=true
    &facet.pivot=year,user_entries
    &f.user_entries.facet.limit=3
    

    但响应与常规字段方面并不完全相同,因此您可能需要更改解析代码。您将获得 year 字段的“2002”值的计数,以及“2002”和 user_entries 字段的值的每个组合(限制为 3),然后是“2003”值的计数。

    【讨论】:

    • 感谢您的回答。我可以限制数据透视结果中的 user_entries 的数量吗?您的查询提供了所有年份的所有 user_entries,但我只需要每年的前 3 个 user_entries。当我使用facet.limit=3 时,它会限制年份和不完整的 user_entries。
    • 我已经编辑了我的答案以包含特定字段的限制。
    • 附加参数f.user_entries.limit=3对结果没有影响。它仍在提取每年的所有 user_entries。
    • 对不起,正确的语法是f.{fieldname}.facet.limit
    • 非常感谢MICHIELVOO
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-02
    • 2018-01-15
    • 1970-01-01
    相关资源
    最近更新 更多