solr 标记和排除范围方面的过滤器

标签 solr filter facet

我正在创建一个不均匀的范围构面,我想支持它的多重选择。但是,过滤器的标签/排除方面的方面停止工作。 以下是我的价格范围 0-20 20-50 50-100 100-* 最初,我使用构面查询填充上述范围。 现在,每当最终用户选择 0-20 和 20-50 时, 我正在生成以下内容

http://localhost:8983/solr/catalog/select?q=games&facet=true&wt=xml&rows=0&     fq={!tag=salePrice}salePrice:[0 TO 20]&facet.query={!ex=salePrice}[0 to 20]&      fq={!ex=salePrice}salePrice:[20 TO 50]&facet.query={!ex=salePrice}[20 to 50]&       other params.

系统返回零结果。

我看到以下 SOLR JIRA 错误已修复并已关闭。

https://issues.apache.org/jira/browse/SOLR-3819

但是,以防万一,只有一个facet.query 正在运行。 在我的示例中,我使用范围不均匀的多个facet.query。 请帮忙。

最佳答案

您的查询有两个不重叠的 fq 子句。这就是为什么你得到零结果的原因——与方面或标签本身无关。对于多项选择,您需要将它们与“OR”组合起来。

而不是

...&fq={!tag=salePrice}salePrice:[0 TO 20]&...&fq={!ex=salePrice}salePrice:[20 TO 50]&...

你想要

...&fq={!tag=salePrice}salePrice:[0 TO 20] OR salePrice:[20 TO 50]&...

(或合并为一个范围)

关于solr 标记和排除范围方面的过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18326686/

相关文章:

java - Solr中多值字段的搜索结果按升序排序

java - Solr 我怎样才能先拥有原始术语而不是词干版本?

solr - SolrJ 客户端使用的 Solr 服务器(Solr 4.0)的默认地址是什么

angular - 清除过滤器 Angular 6

R:gtable 和 ggplot 对象之间的可靠转换。如何在 ggplot_build() 之后使lemmon::reposition_legend() 工作?

r - 如何更改 ggplot 中的一个特定方面

postgresql - ckan中solr和postgreSQL是怎么连接的?

javascript - 如何使用 javascript/jquery 仅显示具有特定类的 li?

javascript - 如何在 Jquery/Javascript 中选择预定义选择的第一个和最后一个元素而不循环?

Elasticsearch 术语方面不显示否定术语