价格范围filter在同一查询中使用Slil UI和Solr的最小值和最大值过滤?

我正在为电子商务网站开发Solr集成。 我想提供一个jQuery Slide Range UI(请参阅http://jqueryui.com/slider/#range )。

因此,访问者将在页面上提供具有最小和最大价格的滑块,他们可以使用这些滑块来定义范围,从而应用filter。

在Solr方面,我了解如何对此进行范围过滤查询。

但是,为了显示范围,我需要最小和最大价格值。 我不知道如何从索尔获得这个。

此外,当过滤其他方面时,我需要更改此最低和最高价格。 但我无法思考Solr如何做到这一点。 solr是否在同一查询中提供最低和最高价格值?

这该怎么做?

或者使用Solr实现此目的的最佳实践是什么?

我相信您已经获得了当前数据集的方面值,因此对于您的范围问题,您必须对客户端的方面值进行排序,并为滑块提供最小值和最大值。

这样它也可以解决您的其他问题,因为应用了filter后,facet的返回结果值也会发生变化。

此外,如果facet没有返回任何内容,您可以添加一个额外的检查,以便不显示滑块。

对于大数据范围,我认为你可以使用solr stats例如:

 http://localhost:8983/solr/select?q=*:*&stats=true&stats.field=price&rows=0&indent=on 

请阅读此处: http : //wiki.apache.org/solr/StatsComponent

使用SOLR的stats ,将统计参数传递给您的SOLR查询,这里我在统计字段中传递grand_total以获得最小值,最大值,计数,平均值,偏差等。

统计数据SOLR Wiki

 http://:/solr//select?wt=json&indent=true&q=*:*&start=0&rows=10&stats=true&stats.field=grand_total 

Solr版本:5.4及以上。

可能是这个post已经老了,但肯定会有所帮助。

我有一个解决方案,我在我的项目中实现。

您必须使用json facet根据构面结果获得最大值和最小值。

  json.facet={ tags_group:{ type:terms, field:tags, limit:-1, facet:{ pricemin:{ type:terms, field:price, limit:1, sort:{ x:asc }, facet:{ x:"min(price)" } }, pricemax:{ type:terms, field:price, limit:1, sort:{ y:desc }, facet:{ y:"max(price)" } } } } } 

在上面的Json方面,我使用了标记为已归档(多值),这将创建一个这样的存储桶

 Letter Holder 2    899.0 1 899.0       1299.0 1 1299.0