[
https://issues.apache.org/jira/browse/SOLR-12516?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16522690#comment-16522690
]
Hoss Man commented on SOLR-12516:
---------------------------------
One complexity in fixing this is the way the refinement requests are currently
built – when building/parsing the {{\_l}} (and {{\_s + \_p}} ) list(s) the code
currently assume everything it finds is a bucket value (or a pair of bucket
value and sub-facet refinement requests) ... there's no intermediate structure
that says "buckets" like there is in the facet response, so there is no way to
put "before"/"between"/"after" outside of the list of bucket values to indicate
what sub-facets need refined -- and putting them in the bucket list seems like
a hack that could cause problems w/the existing code that expects everything in
that list to be parsable by the {{Calc}} for this facet.
Perhaps a new {{\_other}} key should be added alongside the existing {{\_l,
\_s, \_p}} keys that _then_ contains {{\_l, \_s, \_p}} for each of the "other"
buckets (by name) where a sub-facet needs refinement?
Something like...
{noformat}
doTestRefine("{top:{type:range, other:all, field:R, start:0, end:1, gap:1,
facet:{x : {type:terms, field:X, limit:2, refine:true} } } }",
"{top: {buckets:[{val:0, count:2, x:{buckets:[{val:x1,
count:5},{val:x2, count:3}]} } ]" +
" before:{count:0},after:{count:0}," +
" between:{count:2,x:{buckets:[{val:x1, count:5},{val:x2,
count:3}]} } } }",
"{top: {buckets:[{val:0, count:1, x:{buckets:[{val:x2,
count:4},{val:x3, count:2}]} } ]" +
" before:{count:0},after:{count:0}," +
" between:{count:1,x:{buckets:[{val:x2, count:4},{val:x3,
count:2}]} } } }",
null,
"=={top: {" +
"_s:[ [0 , {x:{_l:[x1]}} ] ]" +
"_other:{_s:[ ['between' , {x:{_l:[x1]}} ] ] }" +
" } " +
"}"
);
{noformat}
?
> JSON "range" facets don't refine sub-facets under special buckets
> (before,after,between)
> ----------------------------------------------------------------------------------------
>
> Key: SOLR-12516
> URL: https://issues.apache.org/jira/browse/SOLR-12516
> Project: Solr
> Issue Type: Bug
> Security Level: Public(Default Security Level. Issues are Public)
> Components: Facet Module
> Reporter: Hoss Man
> Priority: Major
> Attachments: SOLR-12516.patch
>
>
> {{FacetRangeMerger extends FacetRequestSortedMerger<FacetRange>}} ... however
> {{FacetRangeMerger}} does not override {{getRefinement(...)}} which means
> only {{FacetRequestSortedMerger.buckets}} is evaluated and considered for
> refinement. The additional, special purpose, {{FacetBucket}} instances
> tracked in {{FacetRangeMerger}} are never considered for refinement.
> In a simple range facet this doesn't cause any problems because these buckets
> are returned by every shard on the phase#1 request -- but *if a sub-facet
> (such as a field facet) is nested under a range facet then the buckets
> returned by the sub-facets for the before/between/after buckets will never be
> refined* ... the phase#1 sub-facet buckets will be merged as.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]