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

Reply via email to