[ 
https://issues.apache.org/jira/browse/SOLR-2242?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13053113#comment-13053113
 ] 

Simon Willnauer commented on SOLR-2242:
---------------------------------------

bq. New patch ready for commit?

bill, I still see lots of whitespace / indentation problems  in that latest 
patch. Anyway I looked at it and I wonder if we could restructure this a little 
like we could first check if termList != null and do all the cases there and if 
termList == null we get the TermCountsLimit that would remove all the redundant 
getTermCountsLimit / getListedTermCounts calls. Like the termList==null case 
seems very easy and straight forward:
{code}
           if (termList != null) {
            NamedList<Integer> counts = getListedTermCounts(facetValue, 
termList);
            switch (numFacetTerms) {
            case COUNTS:
              final NamedList<Integer> resCount = new NamedList<Integer>();
              counts = resCount;
            case COUNTS_AND_VALUES:
              counts.add("numFacetTerms", counts.size());
              break;
            }
            res.add(key, counts);
          } else {
            ...
{code}

yet, its hard to refactor this without a single test (note, there might be a 
bug). I would be really happy to see a test-case for this that tests all the 
variations.
Regarding the constants, I think the default case should be a constant too. If 
you use NamedList can you make sure you put the right generic to it if 
possible, otherwise my IDE goes wild and adds warnings all over the place. In 
your case NamedList<Integer> works fine.

simon

> Get distinct count of names for a facet field
> ---------------------------------------------
>
>                 Key: SOLR-2242
>                 URL: https://issues.apache.org/jira/browse/SOLR-2242
>             Project: Solr
>          Issue Type: New Feature
>          Components: Response Writers
>    Affects Versions: 4.0
>            Reporter: Bill Bell
>            Assignee: Simon Willnauer
>            Priority: Minor
>             Fix For: 4.0
>
>         Attachments: SOLR-2242.patch, SOLR-2242.shard.patch, 
> SOLR-2242.shard.patch, SOLR-2242.solr3.1.patch, SOLR.2242.solr3.1.patch, 
> SOLR.2242.v2.patch
>
>
> When returning facet.field=<name of field> you will get a list of matches for 
> distinct values. This is normal behavior. This patch tells you how many 
> distinct values you have (# of rows). Use with limit=-1 and mincount=1.
> The feature is called "namedistinct". Here is an example:
> http://localhost:8983/solr/select?shards=localhost:8983/solr,localhost:7574/solr&indent=true&q=*:*&facet=true&facet.mincount=1&facet.numFacetTerms=2&facet.limit=-1&facet.field=price
> http://localhost:8983/solr/select?shards=localhost:8983/solr,localhost:7574/solr&indent=true&q=*:*&facet=true&facet.mincount=1&facet.numFacetTerms=0&facet.limit=-1&facet.field=price
> http://localhost:8983/solr/select?shards=localhost:8983/solr,localhost:7574/solr&indent=true&q=*:*&facet=true&facet.mincount=1&facet.numFacetTerms=1&facet.limit=-1&facet.field=price
> This currently only works on facet.field.
> {code}
> <lst name="facet_fields">
>   <lst name="price">
>     <int name="numFacetTerms">14</int>
>     <int name="0.0">3</int><int name="11.5">1</int><int 
> name="19.95">1</int><int name="74.99">1</int><int name="92.0">1</int><int 
> name="179.99">1</int><int name="185.0">1</int><int name="279.95">1</int><int 
> name="329.95">1</int><int name="350.0">1</int><int name="399.0">1</int><int 
> name="479.95">1</int><int name="649.99">1</int><int name="2199.0">1</int>
>   </lst>
> </lst>
> {code} 
> Several people use this to get the group.field count (the # of groups).

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to