Re: sub query parsing bug???
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
Re: sub query parsing bug???
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
Re: sub query parsing bug???
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
sub query parsing bug???
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