i'm creating search app intensively uses solr (5.2.1) faceting functionality. 1 requirement limit number of facets returned prefix specified field.
the standard solr query syntax works single prefix value:
/select?q=*%3a*&rows=0&wt=json&indent=true&facet=true&facet.field=documentkind&f.documentkind.facet.prefix=faq output:
"facet_counts": { "facet_queries": {}, "facet_fields": { "documentkind": { "faq": 1523 } ... unfortunately doesn't work when must limit facets on field more 1 prefix:
/select?q=*%3a*&rows=0&wt=json&indent=true&facet=true&facet.field=documentkind&f.documentkind.facet.prefix=manual&f.documentkind.facet.prefix=faq i expected return this:
"facet_counts": { "facet_queries": {}, "facet_fields": { "documentkind": { "faq": 1523, "manual": 2366 } ... but gives same output previous.
in example above match entire facet value in real use case have match prefix. show example brevity.
i filter out in app size of data returned unnecessary solr significant.
i had similar problem in application. solution problem facet local params. i.e. if i'm faceting data solr techproducts example find out number of products available or not available instock need run query this:
http://localhost:8983/solr/techproducts/select?q=*%3a*&wt=json&indent=true&facet=true&facet.field=instock and following result includes dictinct values instock field:
... "facet_counts":{ "facet_queries":{}, "facet_fields":{ "instock":[ "true",17, "false",4]}, "facet_dates":{}, ... but in case want distinguish facet results using multiple prefixes field value. , here local params handy tool. now, if want facating based on specific value instock field true or false , need use !key label results:
http://localhost:8983/solr/techproducts/select?q=*:*&wt=json&indent=true&facet=true&facet.field={!key=instock_true+facet.prefix=true}instock ... "facet_counts":{ "facet_queries":{}, "facet_fields":{ "instock_true":[ "true",17]}, "facet_dates":{}, ... so after querying data using multiple facet local params prefixes:
/select?q=*:*&rows=0&wt=json&indent=true&facet=true&facet.field={!key=documentkind_manual+facet.prefix=manual}documentkind&facet.field={!key=documentkind_faq+facet.prefix=faq}documentkind and see results that:
... "facet_counts":{ "facet_queries":{}, "facet_fields":{ "documentkind_faq":[ "faq",1523], "documentkind_manual":[ "manual",2366]}, ...
Comments
Post a Comment