[prev in list] [next in list] [prev in thread] [next in thread] 

List:       lucene-user
Subject:    Re: QueryParser refactoring
From:       Erik Hatcher <erik () ehatchersolutions ! com>
Date:       2005-03-09 3:29:43
Message-ID: a8f4adcecee389f597ab08499fb79c80 () ehatchersolutions ! com
[Download RAW message or body]

On Mar 8, 2005, at 5:17 PM, Chris Hostetter wrote:
>
> Earlier in this thread...
>
> : >>> +a -> a
> : >>
> : >> Hmmm.... this is a debatable one.  It's returning a TermQuery in 
> this
> : >> case for "a".  Is that appropriate?  Or should it return a
> : >> BooleanQuery
> : >> with a single TermQuery as required?
>
> : > Ok.
> : > The question how to handle BooleanQueries, that contain prohibited
> : > terms
> : > only, is a question on it's own.
> : > In my fix I choose to silently drop these queries. Basically 
> because
> : > it's
> : > effectivly dropped during querying anyway.
>
> ...I would argue that the most correct behavior would be for QP to
> generate a Boolean query indicating the required/expluded term -- even 
> if
> a Searcher can't run that query as is.  It's not the QueryParsers job 
> to
> know what Query object structures make sense or not, just to know what 
> the
> sanest possible maping from text to query object tree is.

That is a very reasonable mandate for QueryParser.  I agree.

I have committed a round of changes to the PrecedenceQueryParser.  I'm 
going to leave it alone for a while.  There are a couple of tests that 
are failing because I adjusted them to be as desired but not yet 
implemented.  Here are the short comings currently:

	assertQueryEquals("a OR !b", null, "a (-b)");
		junit.framework.AssertionFailedError: Query /a OR !b/ yielded /a -b/, 
expecting /a (-b)/

     query1 = parser.parse("A OR NOT B AND C");
     query2 = parser.parse("A (-B +C)");
     assertEquals(query1, query2);
		junit.framework.AssertionFailedError: expected:<field:A -(+field:B 
+field:C)> but was:<field:A (-field:B +field:C)>

I believe these are similar, if not identical, to what QueryParser does 
with queries, so we're no worse off and we now have operator precedence 
with AND/OR.  I feel the NOT/-/! precedence issue needs to be addressed 
before this is a viable replacement.  If any JavaCC savvy folks are 
interested in lending a handy to fix this remaining issue I'd be 
ecstatic!  I tried some things but thus far unsuccessful.

What else is missing/broken?

	Erik


---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-user-help@lucene.apache.org

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic