(+(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)