On Sep 3, 2006, at 7:33 PM, Chris Hostetter wrote:


: : One thing that my facet code does is compute the count for all items
: : that have _no_ terms in a particular field, and makes an
: : <unspecified> count as well. It does this by putting all documents : : found into a DocSet as it iterates through all terms for a field, and
: : then .andNot'ing it away from an all docs query.  Not pretty, but
: : does work and works quite fast.

when i went to add this, it occured to me that it was probably just easier toget the DocSet for "field:[* TO *]" and andNot that with the main set of matches -- it means conputing one additional (large) DocSet for each field - but for fields with a lot of terms it should be a lot faster then doing
one andNot per term. ... and i'm 99.9999% sure it's functionaly
equivilent (right?)

Yeah, I believe it's equivalent. I just haven't gotten used to the [* TO *] option, so overlooked it. I only do one .andNot per field, though, not per term. Though I do a .union per term. It is bound to be quicker with your approach. I look forward to deprecating my work for this :)

(this only works for "facet fields" like this of course ... if/when we
have arbitrarily complex "facets" defined by a set of rules implemented as
queries we'd certainly need the DocSet.andNot approach)

Good point.

        Erik

Reply via email to