首页 > 解决方案 > Solr 返回统计信息并排除等于零的值

问题描述

我不确定这是否可能,因为我目前正在学习 Solr,而且我还是个新手。我正在查询一个包含几十万件的数据集,并返回有关这些集价格的统计数据。我的大部分数据的价格都远高于 0(理想情况下会超过 150 或 500),但对于某些查询,0 的数量要多得多。

是否有某种方法可以将统计数据排除在最小值、最大值、平均值以及所有值低于设定值(在本例中为 0)的值之外?

我已经尝试过/select?q=*%3A*&wt=json&indent=true&stats=true&stats.field={!min=5000}PRICE&indent=true,但似乎并不那么容易。

我看到的数据示例如下

"stats":{
    "stats_fields":{
        "PRICE":{
            "min":0.0,
            "max":81977.0,
            "count":163,
            "missing":0,
            "sum":799747.0,
            "sumOfSquares":5.9263205819E10,
            "mean":4906.423312883436,
            "stddev":18482.44220103939
        }
    }
}

标签: solrsolr-query-syntax

解决方案


stats 组件与检索到的文档集一起使用,因此,如果您不希望0将这些文档计算在内,请仅请求具有更高值的文档:

?q={0 TO *]

这将获取任何大于 0 的值(因此仍将包括 0.00001)。如果您的实际值从 1 开始,您可以使用q=[1 TO *]1 来包含 1({是独占范围,而[包含在内)。

您还可以应用过滤器fq来过滤结果集,或使用 JSON Facets 来计算一组文档的统计信息。


推荐阅读