【问题标题】:How to exclude a facet range field using SOLR?如何使用 SOLR 排除构面范围字段?
【发布时间】:2015-01-22 09:56:49
【问题描述】:

我在 solr 中有一个 product_rating 字段,如下所示

<int name="product_rating:[4 TO 5]">6</int>
<int name="product_rating:[3 TO 5]">8</int>
<int name="product_rating:[2 TO 5]">9</int>
<int name="product_rating:[1 TO 5]">14</int>

因此,如果我选择此过滤器中的任何一个,我不想更改构面计数。但如果我选择除 product_rating 以外的任何过滤器,我想更改此过滤器计数。这怎么可能? (实际上我想知道 solr exclude 如何在方面范围内工作)。请帮助:)

我使用了这个查询但没有工作

q=*&fq={!tag=dt}product_rating:[4%20TO%205]&facet.field={!ex=dt}product_rating

【问题讨论】:

    标签: php solr elasticsearch lucene


    【解决方案1】:

    这正如您尝试过的一样,as the manual says,但您必须记住您使用的是 facet.range 来提供您的字段名称 - 而不是 facet.field

    facet.range={!ex=dt}id&..&fq={!tag=dt}id:[0 TO 100000]
    

    .. 给出预期结果(其中构面的计数不受fq 的影响)。

    【讨论】:

    • 这看起来不错。因此,如果我想使用 facet.range 制作这样的范围 [1-5] ,[2-5],[3-5],[4-5] 怎么可能?我用 facet.query 做到了。但排除不适用于 facet.query &lt;lst name="facet_counts"&gt; &lt;lst name="facet_queries"&gt; &lt;int name="product_rating:[4 TO 5]"&gt;864&lt;/int&gt; &lt;int name="product_rating:[3 TO 5]"&gt;1548&lt;/int&gt; &lt;int name="product_rating:[2 TO 5]"&gt;1935&lt;/int&gt; &lt;int name="product_rating:[1 TO 5]"&gt;2186&lt;/int&gt; &lt;/lst&gt;
    • 我使用了下面的查询q=*&amp;rows=0&amp;facet=true&amp;facet.query={!ex=dt}product_rating&amp;fq={!tag=dt}product_ra‌​ting:[1%20TO%205],我得到了&lt;int name="product_rating:[4 TO 5]"&gt;0&lt;/int&gt; &lt;int name="product_rating:[3 TO 5]"&gt;0&lt;/int&gt; &lt;int name="product_rating:[2 TO 5]"&gt;0&lt;/int&gt; &lt;int name="product_rating:[1 TO 5]"&gt;2186&lt;/int&gt;。请帮助
    • 你错过了 facet.range 之后的 =,我也使用了这个 facet=true&amp;facet.query=product_rating:[1%20TO%205]&amp;facet.query=product_rating:[2%20TO%205] 但这也不起作用。我没有收到任何方面查询
    猜你喜欢
    • 2020-11-24
    • 1970-01-01
    • 2010-09-07
    • 1970-01-01
    • 2014-04-27
    • 1970-01-01
    • 2014-08-21
    • 1970-01-01
    • 2011-09-25
    相关资源
    最近更新 更多