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

时间:2017-09-12 11:00:04

标签: solr filter duplicates facet

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

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

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

+-------------+
| 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

1 个答案:

答案 0 :(得分:1)

如果我理解你想要每个标签的唯一内容数量,那么,对吗?如果是这样,json facets将执行此操作:

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