I'm new to the list and I'm having an issue that I wanted to ask about quick.
I'm using Lucene version 2.4.1
I recently rewrote a query to use the Query classes rather than a String and
QueryParser. The search results between the two queries are now in different
orders while the number of results are the same. I have one caveat with my
change, I still use QueryParser for part of it so that I can easily handle
quoting.
Here's some pseudo code:
Old Way
QueryParser parser = new QueryParser("words", analyzer);
Query q = parser.parse("+words:(one two) +year:[1950 2010]");
System.out.println("Old query is " + q);
New Way
BooleanQuery q = new BooleanQuery();
QueryParser parser = new QueryParser("words", analyzer);
q.add(parser.parse("one two"), Occur.MUST);
q.add(new RangeQuery(new Term("year", 1950), new Term("year", 2010), true),
Occur.MUST);
System.out.println("New query is " + q);
My first thought was that the queries were ending up actually being different
queries. To verify, I do a toString on the two different queries and they are
the same. That output is:
Old query is +(words:one words:two) +year:[1950 TO 2010]
New query is +(words:one words:two) +year:[1950 TO 2010]
So, I'm sorta stuck as to what to do next in order to figure this out. I'm
thinking that it has to do with the QueryParser usage in my "New Way", but I'm
not sure how that would effect the ordering.
Anyone have experience with this or other things I can try?
Thanks,
-bp