You cannot use field collapsing on these fields and get correct result. You need to collapse on BC pair. If you introduce field D that is BC you can use something like:
  q=A:"XYZ"&fq={!collapse field=D}&facet=true&facet.field=C

Collapse query parser will make sure only 1 BC pair is returned and faceting will return expected values.

Alternatively, you can use facet pivot on existing structure to get expected number indirectly:

  q=A:"XYZ"&facet=true&facet.pivot=C,B

this will return facet_pivot section in response that contains C,B entry:

"C,B": [{ "field": "C", "value": "cat1", "count": 3, "pivot": [
  {"field": "B", "value": "Bar", "count": 2},
  {"field": "B", "value": "Foo", "count": 1}
]}...]

Note that it still returns 3 as count but what you are looking for is length of "pivot" array.

HTH,
Emir

On 05.04.2017 15:11, VJ wrote:
My document schema has fields like:
A,B,C
I am querying for documents with A="XYZ", suppose it returns 5 records
A            B               C
XYZ        Foo           cat1
XYZ        Foo           cat2
XYZ        Bar           cat1
XYZ        Bar           cat1
XYZ        Bar           cat2

out of those 10 records there may be duplicate values for B and then I am
faceting it on C,
So I get something like
Cat1:3 (Foo,Bar,Bar)
Cat2:2 (Foo,Bar)

but I want the output as
Cat1:2 (Foo,Bar)
Cat2:2 (Foo,Bar)

Is it possible to achieve the desired output with solr query?


Thanks,
VJ

On Wed, Apr 5, 2017 at 6:26 PM, Emir Arnautovic <
emir.arnauto...@sematext.com> wrote:

Hi VJ,

You can use field collapsing feature to do distinct (
https://cwiki.apache.org/confluence/display/solr/Result+Grouping) or
maybe you can use facet pivoting and pivot on distinct field to get number
of doc in each if needed (https://cwiki.apache.org/conf
luence/display/solr/Faceting#Faceting-Pivot(DecisionTree)Faceting).

You might also want to explore JSON facet API.

HTH,
Emir



On 05.04.2017 13:08, VJ wrote:

Hi,


Is there any way to pass only distinct records (based on a field) out of a
solr query?
I want to facet the records based on a field but want to restrict the
results to distinct records before applying the facet.



Thanks,
VJ


--
Monitoring * Alerting * Anomaly Detection * Centralized Log Management
Solr & Elasticsearch Support * http://sematext.com/



--
Monitoring * Alerting * Anomaly Detection * Centralized Log Management
Solr & Elasticsearch Support * http://sematext.com/

Reply via email to