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 <[email protected]> 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 <[email protected]> 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>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>