Well, your query below becomes ref_expertise:(nonlinear OR soliton)
AND default_search:"optical lattice:"

The regular Solr/Lucene query should handle pretty much anything you
can throw at it. But do be aware that Solr/Lucene syntax is not true
boolean logic, you have to think in terms of SHOULD, MUST, MUST_NOT.

But this works:
q={!type=edismax qf='name' }(nonlinear OR soliton) AND "optical lattice"
giving this:
+(+((name:nonlinear) (name:soliton)) +(name:"optical lattice"))

Best
Erick

On Mon, Dec 12, 2011 at 3:29 PM, Steve Fuchs <st...@aps.org> wrote:
> Thanks for the reply!
>
> I do believe I have set (or have tried setting) all of those options for the 
> default query and none of them seem to help. Anytime an OR appears inside the 
> query the default for that query becomes OR. At least thats the anecdotal 
> evidence I've encountered.
> Also in this case the results do match what the parser is telling me, so I'm 
> not getting the results I expect.
>
> As for the second suggestion, the actual fields searched are controlled by 
> the user, so it can get more complicated. But even in the single field search 
> I do believe I need to use the edismax parser. I have tried the regular query 
> syntax for searching one field and find that it can't handle the more complex 
> queries.
>
> Something like
> ref_expertise:(nonlinear OR soliton) AND "optical lattice"
>
> won't return any documents even though there are many that satisfy those 
> requirements. Is there some other way I could be executing this query even in 
> the single field case?
>
> Thanks and Thanks in Advance for all help
>
> Steve
>
>
>
>
>
> On Dec 6, 2011, at 8:26 AM, Erick Erickson wrote:
>
>> Hmmm, does this help?
>>
>> In Solr 1.4 and prior, you should basically set mm=0 if you want the
>> equivilent of q.op=OR, and mm=100% if you want the equivilent of
>> q.op=AND. In 3.x and trunk the default value of mm is dictated by the
>> q.op param (q.op=AND => mm=100%; q.op=OR => mm=0%). Keep in mind the
>> default operator is effected by your schema.xml <solrQueryParser
>> defaultOperator="xxx"/> entry. In older versions of Solr the default
>> value is 100% (all clauses must match)
>> (from http://wiki.apache.org/solr/DisMaxQParserPlugin).
>>
>> I don't think you'll see the query parsed as you expect, but the
>> results of the query
>> should be what you expect. Tricky, eh?
>>
>> I'm assuming you've simplified the example for clarity and your qf
>> will be on more than one field when you use it "for real", but if not
>> the actual query doesn't need edismax at all.....
>>
>> Best
>> Erick
>>
>> On Mon, Dec 5, 2011 at 10:52 AM, Steve Fuchs <st...@aps.org> wrote:
>>> Hello All,
>>>
>>> I have my field description listed below, but I don't think its pertinent. 
>>> As my issue seems to be with the query parser.
>>>
>>> I'm currently using an edismax subquery clause to help with my searching as 
>>> such:
>>>
>>> _query_:"{!type=edismax qf='ref_expertise'}\(nonlinear OR soliton\) AND 
>>> \"optical lattice\""
>>>
>>> translates correctly to
>>>
>>> +(+((ref_expertise:nonlinear) (ref_expertise:soliton)) 
>>> +(ref_expertise:"optical lattice"))
>>>
>>>
>>> but the users expect the default operator to be AND (it is in all simpler 
>>> searches), however nothing I can do here gets me that same result as above 
>>> when the search is:
>>>
>>> _query_:"{!type=edismax qf='ref_expertise'}\(nonlinear OR soliton\) 
>>> \"optical lattice\""
>>>
>>> this gets converted to:
>>>
>>> +(((ref_expertise:nonlinear) (ref_expertise:soliton)) 
>>> (ref_expertise:"optical lattice"))
>>>
>>> where the "optical lattice" is optional.
>>>
>>> These produce the same results, trying q.op and mm. Also the default search 
>>> term as  set in the solr.config is AND.
>>>
>>> _query_:"{!type=edismax q.op=AND qf='ref_expertise'}\(nonlinear OR 
>>> soliton\)\"optical lattice\""
>>> _query_:"{!type=edismax mm=1.0 qf='ref_expertise'}\(nonlinear OR 
>>> soliton\)\"optical lattice\""
>>>
>>>
>>>
>>>
>>> Any ideas???
>>>
>>> Thanks In Advance
>>>
>>> Steven Fuchs
>>>
>>>
>>>
>>>
>>>
>>>
>>>    <fieldType name="intl_string" class="solr.TextField" >
>>>      <analyzer type="index">
>>>        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
>>>        <filter class="solr.WordDelimiterFilterFactory" 
>>> preserveOriginal="1"/>
>>>        <filter class="solr.LowerCaseFilterFactory"/>
>>>        <filter class="solr.ASCIIFoldingFilterFactory" />
>>>        <filter class="solr.EdgeNGramFilterFactory" minGramSize="2" 
>>> maxGramSize="25" />
>>>      </analyzer>
>>>      <analyzer type="query">
>>>        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
>>>        <filter class="solr.LowerCaseFilterFactory"/>
>>>        <filter class="solr.ASCIIFoldingFilterFactory" />
>>>      </analyzer>
>>>    </fieldType>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>

Reply via email to