【问题标题】:Limiting / Filtering multivalue fields in Solr限制/过滤 Solr 中的多值字段
【发布时间】:2015-02-13 03:40:30
【问题描述】:

有没有办法限制或过滤 Solr 中多值字段的返回文本?给定 Solr 中的以下文档结构:

...
<doc>
    <str name="title">example</str>
    <arr name="foo">
        <str>bar1</str>
        <str>bar2</str>
        <str>bar3</str>
        <str>bar4</str>
        <str>bar5</str>
        <str>bar6</str>
    </arr>
</doc>
...

我想根据过滤查询请求将响应限制为仅显示 1 个“foo”值。例如,查询:

select/?q=example&fq=foo:bar2`

我希望得到以下回复:

...
<doc>
    <str name="title">example</str>
    <arr name="foo">
        <str>bar2</str>
    </arr>
</doc>
...

【问题讨论】:

    标签: solr filter multivalue


    【解决方案1】:

    不。无法过滤随响应返回的多值值。
    不过,您可以在客户端轻松完成。

    如果您可以使用 Facet 获取列表,您可以使用facet.prefix 来限制作为 facet 返回的字段 foo 的值。

    【讨论】:

    • 谢谢,我期待这样的答案。问题是“foo”可能包含数千个值,这些值仅会影响数据传输的效率。
    【解决方案2】:

    如果您知道“foo”的值的样本空间,您是否尝试过使用动态字段?例如:

    然后过滤 bar_x:true。您最终会使用大量动态字段。

    【讨论】:

      【解决方案3】:

      filter query 应该可以,试试下面的代码

      &amp;fq=+foo:"bar2"

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-01
        • 2023-01-04
        • 1970-01-01
        • 2020-11-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多