i used json facet api for a similar requirement. it can ignore filters from main query if needed and roll up the hit counts to any field ..
> On Feb 11, 2020, at 6:19 PM, Fischer, Stephen > <sfisc...@pennmedicine.upenn.edu> wrote: > > Thanks very much! By the way, we are using eDisMax, and the queries our UI > supports don't include fancy Booleans, so your ideas just might work > > Thanks again, > Steve > > -----Original Message----- > From: Erick Erickson <erickerick...@gmail.com> > Sent: Tuesday, February 11, 2020 7:16 PM > To: solr-user@lucene.apache.org > Subject: [External] Re: per-field count of documents matched? > > Hmmm, you could do a facet query (or a series of them). > facet.query=LastName:stone&facet.query=Street:stone etc….. That’d > automatically only tally for the docs that match. > > You could also consider a custom search component. For the exact case you > describe, it’s actually fairly simple. The postings list has, for each term, > the list of docs that contain it (internal Lucene doc ID). So I might have > for field LastName: > stone -> 1,73,100… > > for field Street: > stone-> 264,933… > > So it’s simply a matter of, for each term, and each doc the overall query > matches go down the list of docs and add them up. > > However… I’m not sure you’d get what you want in either case. Consider a > query (A AND B) OR (C AND D). And let’s say doc1 contains A in LastName, and > C,D in Street. Should A be counted in the LastName tally for this doc? > > I suppose you could put the full query in the facet.query above. I’m still > not sure it’s what you need, since I’m not sure what "per-field count of > documents that match” means in your application… > > Best, > Erick > >> On Feb 11, 2020, at 6:15 PM, Fischer, Stephen >> <sfisc...@pennmedicine.upenn.edu> wrote: >> >> Hi wise Solr experts, >> >> For our scientific use-case we want to show users a per-field count of >> documents that match that field. >> >> We like to do this efficiently because we might return up to a million >> documents. >> >> For example, if we had documents describing People, and a query of, >> say, "Stone" we might want to show >> >> Fields matched: >> Last name: 145 >> Street: 431 >> Favorite rock band: 13 >> Home exterior: 2340 >> >> Is there an efficient way to do this? >> >> So far, we're trying to leverage highlighting. But it seems very slow. >> >> Thanks >