Hi Upayavira,

Thank you for your analysis. I thought 'AND' & groupings are supported as
per documentation:

http://docs.lucidworks.com/display/solr/The+Extended+DisMax+Query+Parser
http://lucene.apache.org/core/old_versioned_docs/versions/3_5_0/queryparsersyntax.html#Grouping

But yes, q=doc-id:3000 AND (-text:[* TO *]) works as expected.

Thanks
-Shankar



On Thu, May 23, 2013 at 5:31 PM, Upayavira <u...@odoko.co.uk> wrote:

> (+(doc-id:3000 DisjunctionMaxQuery((Publisher:and^2.0 | text:and |
> Classification:and^2.0 | Contributors:and^2.0 |
> Title:and^3.0))))/no_coord
>
> You're using edismax, not lucene. So AND is being considered as a search
> term, not an operator, and the word 'and' probably exists in 631580
> documents.
>
> Why is it triggering dismax? Probably because field:() is not valid
> syntax, so edismax is dropping to dismax because it isn't a valid lucene
> query.
>
> What do you expect text:() to do?
>
> If you want to match any docs that have a value in the text field, use
> q=text:[* TO *]
>
> To match docs that *don't* have a value in the text field: q=-text[* TO
> *]
>
> Upayavira
>
> On Fri, May 24, 2013, at 12:23 AM, Shankar Sundararaju wrote:
> > Hi Erick,
> >
> > Here's the output after turning on the debug flag:
> >
> > *q=text:()&debug=query*
> >
> >     yields
> >
> > <response>
> > <lst name="responseHeader">
> > <int name="status">0</int>
> > <int name="QTime">17</int>
> > <lst name="params">
> > <str name="indent">true</str>
> > <str name="q">text:()</str>
> > <str name="debug">query</str>
> > </lst>
> > </lst>
> > <result name="response" numFound="0" start="0" maxScore="0.0"></result>
> > <lst name="debug">
> > <str name="rawquerystring">text:()</str>
> > <str name="querystring">text:()</str>
> > <str name="parsedquery">(+())/no_coord</str>
> > <str name="parsedquery_toString">+()</str>
> > <str name="QParser">ExtendedDismaxQParser</str>
> > <null name="altquerystring"/>
> > <null name="boost_queries"/>
> > <arr name="parsed_boost_queries"/>
> > <null name="boostfuncs"/>
> > </lst>
> > </response>
> >
> > *q=doc-id:3000&debug=query*
> >
> >     yields
> >
> > <response>
> > <lst name="responseHeader">
> > <int name="status">0</int>
> > <int name="QTime">17</int>
> > <lst name="params">
> > <str name="q">doc-id:3000</str>
> > <str name="debug">query</str>
> > </lst>
> > </lst>
> > <result name="response" numFound="1" start="0" maxScore="11.682044">
> > <doc>
> >   :
> >   :
> > </doc>
> > </result>
> > <lst name="debug">
> > <str name="rawquerystring">doc-id:3000</str>
> > <str name="querystring">doc-id:3000</str>
> > <str name="parsedquery">(+doc-id:3000)/no_coord</str>
> > <str name="parsedquery_toString">+doc-id:`#8;#0;#0;#23;8</str>
> > <str name="QParser">ExtendedDismaxQParser</str>
> > <null name="altquerystring"/>
> > <null name="boost_queries"/>
> > <arr name="parsed_boost_queries"/>
> > <null name="boostfuncs"/>
> > </lst>
> > </response>
> >
> > *q=doc-id:3000 AND text:()&debug=query*
> >
> >   yields
> >
> > <response>
> > <lst name="responseHeader">
> > <int name="status">0</int>
> > <int name="QTime">23</int>
> > <lst name="params">
> > <str name="q">doc-id:3000 AND text:()</str>
> > <str name="debug">query</str>
> > </lst>
> > </lst>
> > <result name="response" numFound="631647" start="0" maxScore="8.056607">
> > <doc>
> >  :
> > </doc>
> >  :
> > </doc>
> > <doc>
> >  :
> > </doc>
> > <doc>
> >  :
> > </doc>
> > <doc>
> >  :
> > </doc>
> > <doc>
> >  :
> > </doc>
> > </result>
> > <lst name="debug">
> > <str name="rawquerystring">doc-id:3000 AND text:()</str>
> > <str name="querystring">doc-id:3000 AND text:()</str>
> > <str name="parsedquery">
> > (+(doc-id:3000 DisjunctionMaxQuery((Publisher:and^2.0 | text:and |
> > Classification:and^2.0 | Contributors:and^2.0 |
> > Title:and^3.0))))/no_coord
> > </str>
> > <str name="parsedquery_toString">
> > +(doc-id:`#8;#0;#0;#23;8 (Publisher:and^2.0 | text:and |
> > Classification:and^2.0 | Contributors:and^2.0 | Title:and^3.0))
> > </str>
> > <str name="QParser">ExtendedDismaxQParser</str>
> > <null name="altquerystring"/>
> > <null name="boost_queries"/>
> > <arr name="parsed_boost_queries"/>
> > <null name="boostfuncs"/>
> > </lst>
> > </response>
> >
> > *solrconfig.xml:*
> > <requestHandler name="/select" class="solr.SearchHandler">
> >      <lst name="defaults">
> >        <str name="echoParams">explicit</str>
> >        <int name="rows">10</int>
> >        <str name="df">text</str>
> >        <str name="defType">edismax</str>
> >        <str name="qf">text^1.0 Title^3.0 Classification^2.0
> > Contributors^2.0 Publisher^2.0</str>
> >      </lst>
> >
> > *schema.xml:*
> > <field name="text" type="my_text" indexed="true" stored="false" required=
> > "false"/>*
> > *
> > <dynamicField name="*" type="my_text" indexed="true" stored="true"
> > multiValued="false"/>
> > <fieldType name="my_text" class="solr.TextField"> <analyzer type="index"
> > class="MyAnalyzer"/> <analyzer type="query" class="MyAnalyzer"/>
> > <analyzer
> > type="multiterm" class="MyAnalyzer"/> </fieldType>
> > *
> > *
> > *Note:* MyAnalyzer among few other customizations, uses
> > WhitespaceTokenizer
> > and LoweCaseFilter
> >
> > Thanks a lot.
> >
> > -Shankar
> >
> >
> > On Thu, May 23, 2013 at 4:34 AM, Erick Erickson
> > <erickerick...@gmail.com>wrote:
> >
> > > Please post the results of adding &debug=query to the URL.
> > > That'll tell us what the query parser spits out which is much
> > > easier to analyze.
> > >
> > > Best
> > > Erick
> > >
> > > On Wed, May 22, 2013 at 12:16 PM, Shankar Sundararaju
> > > <shan...@ebrary.com> wrote:
> > > > This query returns 0 documents: *q=(+Title:() +Classification:()
> > > > +Contributors:() +text:())*
> > > >
> > > > This returns 1 document: *q=doc-id:3000*
> > > >
> > > > And this returns 631580 documents when I was expecting 0:
> *q=doc-id:3000
> > > > AND (+Title:() +Classification:() +Contributors:() +text:())*
> > > >
> > > > Am I missing something here? Can someone please explain? I am using
> Solr
> > > > 4.2.1
> > > >
> > > > Thanks
> > > > -Shankar
> > >
> >
> >
> >
> > --
> > Regards,
> > *Shankar Sundararaju
> > *Sr. Software Architect
> > ebrary, a ProQuest company
> > 410 Cambridge Avenue, Palo Alto, CA 94306 USA
> > shan...@ebrary.com | www.ebrary.com | 650-475-8776 (w) | 408-426-3057(c)
>



-- 
Regards,
*Shankar Sundararaju
*Sr. Software Architect
ebrary, a ProQuest company
410 Cambridge Avenue, Palo Alto, CA 94306 USA
shan...@ebrary.com | www.ebrary.com | 650-475-8776 (w) | 408-426-3057 (c)

Reply via email to