Mailing List Archive

Proposed fix for RangeQuery
This is to fix a problem with an inclusive range query running one term past
past the upper term when the upper term was not found in the index.

Index: RangeQuery.java
===================================================================
RCS file:
/home/cvs/jakarta-lucene/src/java/org/apache/lucene/search/RangeQuery.java,v
retrieving revision 1.1
diff -u -w -r1.1 RangeQuery.java
--- RangeQuery.java 2001/09/25 21:53:20 1.1
+++ RangeQuery.java 2001/10/10 21:05:48
@@ -169,13 +169,16 @@
if (!checkLower || term.text().compareTo(lowerText)
> 0)
{
checkLower = false;
- // if exclusive and this is last term, don't
count it and break
- if (!inclusive && (upperTerm != null) &&
(upperTerm.compareTo(term) <= 0)) break;
+ if (upperTerm !=
null)
+ {
+ int compare
= upperTerm.compareTo(term);
+ /* if beyond
the upper term, or is exclusive and
+ * this is
equal to the upper term, break out */
+ if ((compare
< 0) || (!inclusive && compare == 0)) break;
+ }
TermQuery tq = new TermQuery(term); //
found a match
tq.setBoost(boost); // set the
boost
q.add(tq, false, false); // add to
q
- // if inclusive just added last term, break out
- if (inclusive && (upperTerm != null) &&
(upperTerm.compareTo(term) <= 0)) break;
}
}
else