: I'm comparing pivot faceting to json sub-faceting.

JSON Faceting originally didn't support any sort of refinement -- at that 
point it was (IMO) really only useful for getting approximate information 
about the facet buckets -- it you needed hierarchical facets/stats and 
wanted any sort of confidence as to their accuracy, I would 
have absolutely said you should use pivot faceting.

Once (optional) refinement was added to JSON Faceting things got better -- 
but it was still just "two phase" refinement, and there weren't very many 
options for tuning how aggresive the refinement was.   At that point I 
would have still recommended pivot faceting for usecases where you wanted 
confidence in the accuracy in determining the top buckets.

Once *BOTH* the "overrequest" & "overrefine" params were added, it became 
possible to exert a lot of control over how much refinement is done, and 
how accurate the top buckets are -- and a long the way JSON faceting 
gained a lot of other additional features, optimizations, and bug fixes.

At this point, I really don't recommend pivot faceting for any "real 
world" usecases I've seen.  The one hypothetical usecase where pivot 
faceting *might* be better is if you needed to do *deeply* nested 
facets, on fields with huge numbers of terms, in a collection where your 
term/bucket distribution across shards is very imbalanced, and you really 
wanted to be completley confident that you were getting the best possible 
top buckets at every level of the nested buckets, even if the requests 
took much longer -- and that's because the pivot facets will make 
recursive refinement calls for each level of the nested facets, to ensure 
the stats and sub-facets of every bucket are populated by every shard.

For most usecases though: the JSON facet "two phase" approach is much 
faster, works just fine by default, and can be made even better by tuning 
"overrequest" & "overrefine".

-Hoss
http://www.lucidworks.com/

Reply via email to