Based on his example, it sounds like Naresh not only wants the tags field to
contain at least one of the values [T1, T2, T3] but also wants to exclude
documents that contain a tag other than T1, T2, or T3 (Doc3 should not be
retrieved).
If the set of possible values in the tags field is limited and known, you could
use a NOT (or '-') clause to accomplish this. If there were 5 possible tag
values:
tags:(( T1 OR T2 OR T3) NOT (T4 OR T5))
However this doesn't seem practical if the number of possible values is large
or unlimited. Perhaps something could be done with range queries:
tags:(( T1 OR T2 OR T3) NOT ([* TO T1} OR {T1 TO T2} OR {T3 to * ]))
however this would require whatever is constructing the query to be aware of
the lexical ordering of the terms in the index. Maybe there are more elegant
solutions, but I am not aware of them.
- Andy -
-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of Sujit
Pal
Sent: Monday, May 11, 2015 10:40 AM
To: [email protected]
Subject: Re: Solr query which return only those docs whose all tokens are from
given list
Hi Naresh,
Couldn't you could just model this as an OR query since your requirement is at
least one (but can be more than one), ie:
tags:T1 tags:T2 tags:T3
-sujit
On Mon, May 11, 2015 at 4:14 AM, Naresh Yadav <[email protected]> wrote:
> Hi all,
>
> Also asked this here : http://stackoverflow.com/questions/30166116
>
> For example i have SOLR docs in which tags field is indexed :
>
> Doc1 -> tags:T1 T2
>
> Doc2 -> tags:T1 T3
>
> Doc3 -> tags:T1 T4
>
> Doc4 -> tags:T1 T2 T3
>
> Query1 : get all docs with "tags:T1 AND tags:T3" then it works and
> will give Doc2 and Doc4
>
> Query2 : get all docs whose tags must be one of these [T1, T2, T3]
> Expected is : Doc1, Doc2, Doc4
>
> How to model Query2 in Solr ?? Please help me on this ?
>