Sweet!

On Mon, Jul 22, 2013 at 10:54 AM, Yonik Seeley <yo...@lucidworks.com> wrote:
> function queries to the rescue!
>
> q={!func}def(query($a),query($b),query($c))
> a=field1:value1
> b=field2:value2
> c=field3:value3
>
> "def" or default function returns the value of the first argument that
> matches.  It's named default because it's more commonly used like
> def(popularity,50)  (return the value of the popularity field, or 50
> if the doc has no value for that field).
>
> -Yonik
> http://lucidworks.com
>
>
> On Sun, Jul 21, 2013 at 8:48 PM, Deepak Konidena <deepakk...@gmail.com> wrote:
>> I understand that lucene's AND (&&), OR (||) and NOT (!) operators are
>> shorthands for REQUIRED, OPTIONAL and EXCLUDE respectively, which is why
>> one can't treat them as boolean operators (adhering to boolean algebra).
>>
>> I have been trying to construct a simple OR expression, as follows
>>
>> q = +(field1:value1 OR field2:value2)
>>
>> with a match on either field1 or field2. But since the OR is merely an
>> optional, documents where both field1:value1 and field2:value2 are matched,
>> the query returns a score resulting in a match on both the clauses.
>>
>> How do I enforce short-circuiting in this context? In other words, how to
>> implement short-circuiting as in boolean algebra where an expression A || B
>> || C returns true if A is true without even looking into whether B or C
>> could be true.
>> -Deepak

Reply via email to