I was hoping that would "just work"; since it didn't, I dug a little more and I'm afraid that explicitly setting`method:uif` has no effect -- if docValues are there, they will be used:
https://github.com/apache/solr/blob/c99af207c761ec34812ef1cc3054eb2804b7448b/solr/core/src/java/org/apache/solr/search/facet/FacetField.java#L161-L167 Pending SOLR-8362 (or some other more narrow solution?), I think the only responsible recommendation is: don't use SortableTextField for faceting. Would it work to use TextField instead? TextField has to be uninverted, but at least it meets the requirement of indexed values being compatible with values over which bulk facet collection takes place. On Mon, Apr 25, 2022 at 3:52 PM WU, Zhiqing <[email protected]> wrote: > Hi Michael, > Thanks for your quick reply and related information. > I added "method":"uif" at 3 different places but it does not address my > problem - > 1. > { > "query": "*:*", > "method":"uif", > "facet": { > "categories": { > "type": "terms", > "field": "name_txt_sort", > "limit": -1, > "facet": { > "sex_s": { > "type": "terms", > "field": "sex_s", > "limit": -1 > } > } > } > } > } > > Response: > "error":{ > "metadata":[ > "error-class"...]} > > 2. > { > "query": "*:*", > "facet": { > "method":"uif", > "categories": { > "type": "terms", > "field": "name_txt_sort", > "limit": -1, > "facet": { > "sex_s": { > "type": "terms", > "field": "sex_s", > "limit": -1 > } > } > } > } > } > > Response: > "error":{ > "metadata":[ > "error-class", ... > > 3. > { > "query": "*:*", > "facet": { > "categories": { > "method":"uif", > "type": "terms", > "field": "name_txt_sort", > "limit": -1, > "facet": { > "sex_s": { > "type": "terms", > "field": "sex_s", > "limit": -1 > } > } > } > } > } > > Response: > "facets":{ > "count":3, > "categories":{ > "buckets":[{ > "val":"Amelia Harris", > "count":1}, > { > "val":"George Smith", > "count":1}, > { > "val":"Olivia Wilson", > "count":1}]}}} > > Should I try "method":"uif" at another place? > Kind regards, > Zhiqing > > On Mon, 25 Apr 2022 at 17:47, Michael Gibney <[email protected]> > wrote: > > > This is related to https://issues.apache.org/jira/browse/SOLR-13056 > > > > I'm curious: if you set `method:uif` on the top-level facet, are you able > > to achieve the desired results? (Note that `method:uif` incurs the same > > heap memory overhead -- uninverting the indexed values -- as faceting > over > > a regular TextField). Doing this (if it works as I think it might) could > > address the core problem with faceting on SortableTextField: that > DocValues > > for SortableTextField are appropriate for _sorting_, but are different > from > > the _indexed_ values that would be used for refinement and nested domain > > filtering. > > > > See also https://issues.apache.org/jira/browse/SOLR-8362 > > > > On Mon, Apr 25, 2022 at 11:59 AM WU, Zhiqing <[email protected]> wrote: > > > > > Hello, > > > I do not know why Nested Facets ( > > > https://solr.apache.org/guide/8_11/json-facet-api.html#nested-facets) > > does > > > not work for _txt_sort field (SortableTextField). > > > > > > To reproduce the problem, > > > I created a new collection (Config set: _default) and add the following > > to > > > the collection > > > { > > > "name_txt_sort": ["Amelia Harris"], > > > "name_txt": ["Amelia Harris"], > > > "sex_s": "female" > > > }, > > > { > > > "name_txt_sort": ["Olivia Wilson"], > > > "name_txt": ["Olivia Wilson"], > > > "sex_s": "female" > > > }, > > > { > > > "name_txt_sort": ["George Smith"], > > > "name_txt": ["George Smith"], > > > "sex_s": "male" > > > } > > > > > > If my query is: > > > { > > > "query": "*:*", > > > "facet": { > > > "categories": { > > > "type": "terms", > > > "field": "name_txt", > > > "limit": -1, > > > "facet": { > > > "sex_s": { > > > "type": "terms", > > > "field": "sex_s", > > > "limit": -1 > > > } > > > } > > > } > > > } > > > } > > > > > > The output is correct: > > > ============================ > > > "facets":{ > > > "count":3, > > > "categories":{ > > > "buckets":[{ > > > "val":"amelia", > > > "count":1, > > > "sex_s":{ > > > "buckets":[{ > > > "val":"female", > > > "count":1}]}}, > > > { > > > "val":"george", > > > "count":1, > > > ... > > > ============================ > > > > > > However, if I change > > > "field": "name_txt" > > > to > > > "field": "name_txt_sort" > > > in my query, only one level group result is shown: > > > ================================ > > > "facets":{ > > > "count":3, > > > "categories":{ > > > "buckets":[{ > > > "val":"Amelia Harris", > > > "count":1}, > > > { > > > "val":"George Smith", > > > "count":1}, > > > { > > > "val":"Olivia Wilson", > > > "count":1}]}}} > > > ==================================== > > > > > > I know for _txt field, its fieldType is "text_general" and class is > > > "solr.TextField" > > > for _txt_sort field, its fieldType is "text_gen_sort" and class is > > > "solr.SortableTextField" > > > > > > It seems SortableTextField will influence Nested Facets but I could not > > > find any related document. > > > Is it a bug or SortableTextField is not acceptable in Nested Facets? > > > Many thanks in advance. > > > Kind regards, > > > Zhiqing > > > > > >
