@Erick Sorry! I chose a simple example as I wanted to reduce complexity. In detail: * We have distinct contents like tours, offers, events, etc which themselves may be categorized: A tour may be a hiking tour, a mountaineering tour, ... * We have hundreds of customers that want to facet their searches to that content types but often with distinct combinations of categories, i.e. customer A wants his facet "tours" to only count hiking tours, customer B only mountaineering tours, customer C a combination of both, etc * We use "query" facets as each facet request will be build dynamically (it is not feasible to aggregate certain categories and add them as an additional solr schema field as we have hundreds of different combinations). * Anyways, our ui only requires adding a toggle to filter for (for example) "tours" in case a facet result is present. We do not care about the number of tours. * As we have millions of contents and dozens of content types (and dozens of categories per content type) such queries may take a very long time.
A complex example may look like this: *q=*:*&json.facet={ tour:{ type : query, q: \"+categoryId:(21450 21453)\" }, guide:{ type : query, q: \"+categoryId:(21105 21401 21301 21302 21303 21304 21305 21403 21404)\" }, story:{ type : query, q: \"+categoryId:21515\" }, condition:{ type : query, q: \"+categoryId:21514\" }, hut:{ type : query, q: \"+categoryId:8510\" }, skiresort:{ type : query, q: \"+categoryId:21493\" }, offer:{ type : query, q: \"+categoryId:21462\" }, lodging:{ type : query, q: \"+categoryId:6061\" }, event:{ type : query, q: \"+categoryId:21465\" }, poi:{ type : query, q: \"+(+categoryId:6000 -categoryId:(6061 21493 8510))\" }, authors:{ type : query, q: \"+categoryId:(21205 21206)\" }, partners:{ type : query, q: \"+categoryId:21200\" }, list:{ type : query, q: \"+categoryId:21481\" } }\&rows=0"* @Michael Thanks for your suggestion but this does not work as * the facet module expects an aggregate function (which i simply added by embracing your call with sum(...)) * and (please correct me if I am wrong) the exists() function not stops on the first match, but counts the number of results for which the query matches a document.