Thought of another way to do this which will at least work for one field,
and that is by mapping all of the values into a simple string field and
then querying for an exact match in the string (one term). This is similar
to having a 'count' field, but for our index creation process we could
reuse a string field we already had made (for sorting). Still, I'd like to
see if the community has any other options from within Solr itself.
On Thu, Jan 26, 2012 at 2:05 AM, bilal dadanlar wrote:
> I am having a similar problem and would appreciate any useful explanation
> on this topic.
> I couldn't find a way of querying for "exact match" in multivalued or
> normal text fields
>
> On Thu, Jan 26, 2012 at 3:14 AM, Garrett Conaty wrote:
>
> > Does anyone know if there's a way using the SOLR query syntax to filter
> > documents that have only a certain value in a multivalued field? As an
> > example if I have some field "country" that's multivalued and I want
> >
> > q=id:[* TO *]&fq=country:brazil where 'brazil' is the only value
> > present.
> >
> > I've run through a few possibilities to do this, but I think it would be
> > more common and a better solution would exist:
> >
> > 1) On index creation time, aggregate my source data and create a
> > "count_country" field that contains the number of terms in the country
> > field. Then the query would be q=id:[* TO
> > *]&fq=country:brazil&fq=count_country=1
> >
> > 2) In the search client, use the terms component to retrieve all terms
> for
> > "country" and then do the exclusions in the client and construct the
> query
> > as follows q=id:[* TO
> > *]&fq=country:brazil&fq=-country:canada&fq=-country:us etc.
> >
> > 3) Write a function query or similar that could capture the info.
> >
> >
> >
> > Thanks in advance,
> > Garrett Conaty
> >
>
>
>
> --
> Bilal Dadanlar
>