特定字段值的 Solr 构面计数

标签 solr faceted-search

Solr 为我创建多选分面计数,如下所述:

https://web.archive.org/web/20131202095639/http://wiki.apache.org/solr/SimpleFacetParameters#Multi-Select_Faceting_and_LocalParams

我还有各种预定义搜索,允许用户浏览目录。这是一个这样的例子及其查询参数:

q=*:*
fq={!tag=g}genre:western
facet=on
facet.field={!ex=g}genre
facet.mincount=1
facet.limit=50

通过这次搜索,我在构面列表中获得了多达 50 个流派值。然后我检查并标记用户选择了哪些值; 西部 在这种情况下。这很好用,除非 western 被挤出前 50 名。所以我手动将它添加到列表中,使总数达到 51。这样用户就可以看到它确实被选中了。问题是我必须将 western 的计数留空,因为我不知道。

在这种情况下,有没有办法获取特定方面值的计数,例如 western?或者用另一种方法来解决这个问题?

我正在使用 Solr 4.7.0。

最佳答案

Solr 允许您使用 facet.query 参数创建基于查询的分面计数。在创建基于构面字段值的过滤器查询 (fq) 时,我现在创建一个相应的构面查询:

facet.query={!ex=g}genre:western

并将其添加到我的其余参数中:

q=*:*
fq={!tag=g}genre:western
facet=on
facet.field={!ex=g}genre
facet.query={!ex=g}genre:western
facet.mincount=1
facet.limit=50

facet_queries 对象现在将填充在 solr 响应中:

{
  ...
  "facet_counts": {
    "facet_queries": {
      "{!ex=g}genre:western": 7
    },
    ...
  },
  ...
}

无论 facet_fields 对象返回什么,我现在都可以保证 genre:western 有一个分面数。通过一些解析,可以从方面查询中提取方面字段计数。

关于特定字段值的 Solr 构面计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26875022/

相关文章:

java - Elasticsearch 前缀过滤器

java - Solr dismax 突出显示不尊重分析器

mysql - 什么会导致连接比分成两个查询慢?

c# - 在我的querybuiler中添加多个(非硬编码)构面

json - SOLR 方面结果为 csv

django - 根据页面不同,SearchQuerySet 也不同

Solr 返回错误 #404 Not Found for url http ://localhost:8983/solr/update? commit=true

solr - BaseTokenFilterFactory 在 Solr 4.0 中去了哪里?

mysql - 在 Solr 中搜索