Solr:首先是构面,然后是过滤查询

Solr: First facet, then filter query

我正在存储包含文本 Content 和不同 Tags 的文档。搜索时,我使用过滤器查询来删除重复项:q=*:*&fq={!collapse field=Content}

接下来,我想显示我正在使用以下方面查询的每个组中的文档数:q=*:*&facet=true&facet.field=Tags

问题是用不同 Tags 标记的相同文档。例如。 我将文档 A 索引了四次;两次使用标签 x,两次使用标签 y。我想获得一个 table 像:

+-------------+
| Tag   Count |
+-------------+
| x     1     |
| y     1     |
+-------------+

所以我尝试合并两个查询:q=*:*&facet=true&facet.field=Tags&fq={!collapse field=Content}。 但是,这将首先应用过滤器查询,然后再执行分面,导致:

+----------------+
|  Tag   Count   |
+----------------+
| x     0 (or 1) |
| y     1 (or 1) |
+----------------+

所以,我想分别为每个方面应用过滤器查询。这怎么可能?没有 facet.fq 参数。 facet.query={!collapse field=Content}Tags 给我 SolrServerException: No live SolrServers available to handle this request.

如果我理解正确的话你想要 'count of unique Content per Tag',对吗?如果是这样,json facets 会这样做:

curl http://.../query -d 'q=*:*&json.facet={
   tags:{terms:{
    field : Tag,    
    facet:{        "unique" : "unique(Content)"      }
    }}
}'