Too many ‘+’’s in there, I think.  

I think the query you want is this, and let’s be precise about the query parser 
here too in case that’s getting in the way and split this stuff up into 
separate reusable clauses:

    ?qq=test
    &q_no_type=({!field f=name v=$qq} -type:*)
    &q_research=({!field f=name v=$qq} type:research)
    &q={!lucene}${q_no_type) OR ${q_research}

Sorry, that’s just how my brain thinks, above - in splitting this stuff out.   
But in one line it’s really:

   q=(name:test -type:*) OR (name:test AND type:research)

        Erik

    

> On Apr 17, 2017, at 7:22 AM, Furkan KAMACI <furkankam...@gmail.com> wrote:
> 
> On the other hand, that query does not do what I want.
> 
> On Mon, Apr 17, 2017 at 2:18 PM, Furkan KAMACI <furkankam...@gmail.com>
> wrote:
> 
>> Btw, what is the difference between
>> 
>> +name:test +(type:research (*:* -type:[* TO *]))
>> 
>> and
>> 
>> +name:test +(type:research -type:[* TO *])
>> 
>> On Mon, Apr 17, 2017 at 1:33 PM, Furkan KAMACI <furkankam...@gmail.com>
>> wrote:
>> 
>>> Actually, amount of documents which have 'type' field is relatively too
>>> small across all documents at index.
>>> 
>>> On Mon, Apr 17, 2017 at 7:08 AM, Alexandre Rafalovitch <
>>> arafa...@gmail.com> wrote:
>>> 
>>>> What about setting a default value for the field? That is probably
>>>> faster than negative search clauses?
>>>> 
>>>> Regards,
>>>>   Alex.
>>>> ----
>>>> http://www.solr-start.com/ - Resources for Solr users, new and
>>>> experienced
>>>> 
>>>> 
>>>> On 16 April 2017 at 23:58, Mikhail Khludnev <m...@apache.org> wrote:
>>>>> +name:test +(type:research (*:* -type:[* TO *]))
>>>>> 
>>>>> On Sun, Apr 16, 2017 at 11:47 PM, Furkan KAMACI <
>>>> furkankam...@gmail.com>
>>>>> wrote:
>>>>> 
>>>>>> Hi,
>>>>>> 
>>>>>> I have a schema like:
>>>>>> 
>>>>>> name,
>>>>>> department,
>>>>>> type
>>>>>> 
>>>>>> type is an optional field. Some documents don't have that field. Let's
>>>>>> assume I have these:
>>>>>> 
>>>>>> Doc 1:
>>>>>> name: test
>>>>>> type: research
>>>>>> 
>>>>>> Doc 2:
>>>>>> name: test
>>>>>> type: developer
>>>>>> 
>>>>>> Doc 3:
>>>>>> name: test
>>>>>> 
>>>>>> I want to search name: test and type:research if type field exists
>>>> (result
>>>>>> will be Doc 1 and Doc 3).
>>>>>> 
>>>>>> How can I do that?
>>>>>> 
>>>>>> Kind Regards,
>>>>>> Furkan KAMACI
>>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> --
>>>>> Sincerely yours
>>>>> Mikhail Khludnev
>>>> 
>>> 
>>> 
>> 

Reply via email to