You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-commits@lucene.apache.org by us...@apache.org on 2009/11/21 20:49:54 UTC
svn commit: r882977 - in /lucene/java/trunk: CHANGES.txt
src/java/org/apache/lucene/search/NumericRangeQuery.java
Author: uschindler
Date: Sat Nov 21 19:49:54 2009
New Revision: 882977
URL: http://svn.apache.org/viewvc?rev=882977&view=rev
Log:
LUCENE-2087: Remove recursion in NumericRangeTermEnum
Modified:
lucene/java/trunk/CHANGES.txt
lucene/java/trunk/src/java/org/apache/lucene/search/NumericRangeQuery.java
Modified: lucene/java/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/java/trunk/CHANGES.txt?rev=882977&r1=882976&r2=882977&view=diff
==============================================================================
--- lucene/java/trunk/CHANGES.txt (original)
+++ lucene/java/trunk/CHANGES.txt Sat Nov 21 19:49:54 2009
@@ -18,7 +18,10 @@
Optimizations
* LUCENE-2086: When resolving deleted terms, do so in term sort order
- for better performance (Bogdan Ghidireac via Mike McCandless)
+ for better performance. (Bogdan Ghidireac via Mike McCandless)
+
+* LUCENE-2087: Remove recursion in NumericRangeTermEnum.
+ (Uwe Schindler)
Build
Modified: lucene/java/trunk/src/java/org/apache/lucene/search/NumericRangeQuery.java
URL: http://svn.apache.org/viewvc/lucene/java/trunk/src/java/org/apache/lucene/search/NumericRangeQuery.java?rev=882977&r1=882976&r2=882977&view=diff
==============================================================================
--- lucene/java/trunk/src/java/org/apache/lucene/search/NumericRangeQuery.java (original)
+++ lucene/java/trunk/src/java/org/apache/lucene/search/NumericRangeQuery.java Sat Nov 21 19:49:54 2009
@@ -27,6 +27,7 @@
import org.apache.lucene.util.StringHelper;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.Term;
+import org.apache.lucene.index.TermEnum;
/**
* <p>A {@link Query} that matches numeric values within a
@@ -486,6 +487,12 @@
throw new UnsupportedOperationException("not implemented");
}
+ /** this is a dummy, it is not used by this class. */
+ @Override
+ protected void setEnum(TermEnum tenum) {
+ throw new UnsupportedOperationException("not implemented");
+ }
+
/**
* Compares if current upper bound is reached,
* this also updates the term count for statistics.
@@ -507,29 +514,35 @@
assert actualEnum != null;
if (actualEnum.next()) {
currentTerm = actualEnum.term();
- if (termCompare(currentTerm)) return true;
+ if (termCompare(currentTerm))
+ return true;
}
}
+
// if all above fails, we go forward to the next enum,
// if one is available
currentTerm = null;
- if (rangeBounds.size() < 2) {
- assert rangeBounds.size() == 0;
- return false;
- }
- // close the current enum and read next bounds
- if (actualEnum != null) {
- actualEnum.close();
- actualEnum = null;
+ while (rangeBounds.size() >= 2) {
+ assert rangeBounds.size() % 2 == 0;
+ // close the current enum and read next bounds
+ if (actualEnum != null) {
+ actualEnum.close();
+ actualEnum = null;
+ }
+ final String lowerBound = rangeBounds.removeFirst();
+ this.currentUpperBound = rangeBounds.removeFirst();
+ // create a new enum
+ actualEnum = reader.terms(termTemplate.createTerm(lowerBound));
+ currentTerm = actualEnum.term();
+ if (currentTerm != null && termCompare(currentTerm))
+ return true;
+ // clear the current term for next iteration
+ currentTerm = null;
}
- final String lowerBound = rangeBounds.removeFirst();
- this.currentUpperBound = rangeBounds.removeFirst();
- // this call recursively uses next(), if no valid term in
- // next enum found.
- // if this behavior is changed/modified in the superclass,
- // this enum will not work anymore!
- setEnum(reader.terms(termTemplate.createTerm(lowerBound)));
- return (currentTerm != null);
+
+ // no more sub-range enums available
+ assert rangeBounds.size() == 0 && currentTerm == null;
+ return false;
}
/** Closes the enumeration to further activity, freeing resources. */
RE: svn commit: r882977 - in /lucene/java/trunk: CHANGES.txt src/java/org/apache/lucene/search/NumericRangeQuery.java
Posted by Uwe Schindler <uw...@thetaphi.de>.
Yes since Tuesday.
-----
Uwe Schindler
H.-H.-Meier-Allee 63, D-28213 Bremen
http://www.thetaphi.de
eMail: uwe@thetaphi.de
> -----Original Message-----
> From: Simon Willnauer [mailto:simon.willnauer@googlemail.com]
> Sent: Saturday, November 21, 2009 9:00 PM
> To: java-dev@lucene.apache.org
> Subject: Re: svn commit: r882977 - in /lucene/java/trunk: CHANGES.txt
> src/java/org/apache/lucene/search/NumericRangeQuery.java
>
> Is the trunk open for 3.1 already?
>
> simon
>
> On Sat, Nov 21, 2009 at 8:49 PM, <us...@apache.org> wrote:
> > Author: uschindler
> > Date: Sat Nov 21 19:49:54 2009
> > New Revision: 882977
> >
> > URL: http://svn.apache.org/viewvc?rev=882977&view=rev
> > Log:
> > LUCENE-2087: Remove recursion in NumericRangeTermEnum
> >
> > Modified:
> > lucene/java/trunk/CHANGES.txt
> >
> lucene/java/trunk/src/java/org/apache/lucene/search/NumericRangeQuery.jav
> a
> >
> > Modified: lucene/java/trunk/CHANGES.txt
> > URL:
> http://svn.apache.org/viewvc/lucene/java/trunk/CHANGES.txt?rev=882977&r1=8
> 82976&r2=882977&view=diff
> >
> ==========================================================================
> ====
> > --- lucene/java/trunk/CHANGES.txt (original)
> > +++ lucene/java/trunk/CHANGES.txt Sat Nov 21 19:49:54 2009
> > @@ -18,7 +18,10 @@
> > Optimizations
> >
> > * LUCENE-2086: When resolving deleted terms, do so in term sort order
> > - for better performance (Bogdan Ghidireac via Mike McCandless)
> > + for better performance. (Bogdan Ghidireac via Mike McCandless)
> > +
> > +* LUCENE-2087: Remove recursion in NumericRangeTermEnum.
> > + (Uwe Schindler)
> >
> > Build
> >
> >
> > Modified:
> lucene/java/trunk/src/java/org/apache/lucene/search/NumericRangeQuery.java
> > URL:
> http://svn.apache.org/viewvc/lucene/java/trunk/src/java/org/apache/lucene/
> search/NumericRangeQuery.java?rev=882977&r1=882976&r2=882977&view=diff
> >
> ==========================================================================
> ====
> > ---
> lucene/java/trunk/src/java/org/apache/lucene/search/NumericRangeQuery.java
> (original)
> > +++
> lucene/java/trunk/src/java/org/apache/lucene/search/NumericRangeQuery.java
> Sat Nov 21 19:49:54 2009
> > @@ -27,6 +27,7 @@
> > import org.apache.lucene.util.StringHelper;
> > import org.apache.lucene.index.IndexReader;
> > import org.apache.lucene.index.Term;
> > +import org.apache.lucene.index.TermEnum;
> >
> > /**
> > * <p>A {@link Query} that matches numeric values within a
> > @@ -486,6 +487,12 @@
> > throw new UnsupportedOperationException("not implemented");
> > }
> >
> > + /** this is a dummy, it is not used by this class. */
> > + @Override
> > + protected void setEnum(TermEnum tenum) {
> > + throw new UnsupportedOperationException("not implemented");
> > + }
> > +
> > /**
> > * Compares if current upper bound is reached,
> > * this also updates the term count for statistics.
> > @@ -507,29 +514,35 @@
> > assert actualEnum != null;
> > if (actualEnum.next()) {
> > currentTerm = actualEnum.term();
> > - if (termCompare(currentTerm)) return true;
> > + if (termCompare(currentTerm))
> > + return true;
> > }
> > }
> > +
> > // if all above fails, we go forward to the next enum,
> > // if one is available
> > currentTerm = null;
> > - if (rangeBounds.size() < 2) {
> > - assert rangeBounds.size() == 0;
> > - return false;
> > - }
> > - // close the current enum and read next bounds
> > - if (actualEnum != null) {
> > - actualEnum.close();
> > - actualEnum = null;
> > + while (rangeBounds.size() >= 2) {
> > + assert rangeBounds.size() % 2 == 0;
> > + // close the current enum and read next bounds
> > + if (actualEnum != null) {
> > + actualEnum.close();
> > + actualEnum = null;
> > + }
> > + final String lowerBound = rangeBounds.removeFirst();
> > + this.currentUpperBound = rangeBounds.removeFirst();
> > + // create a new enum
> > + actualEnum = reader.terms(termTemplate.createTerm(lowerBound));
> > + currentTerm = actualEnum.term();
> > + if (currentTerm != null && termCompare(currentTerm))
> > + return true;
> > + // clear the current term for next iteration
> > + currentTerm = null;
> > }
> > - final String lowerBound = rangeBounds.removeFirst();
> > - this.currentUpperBound = rangeBounds.removeFirst();
> > - // this call recursively uses next(), if no valid term in
> > - // next enum found.
> > - // if this behavior is changed/modified in the superclass,
> > - // this enum will not work anymore!
> > - setEnum(reader.terms(termTemplate.createTerm(lowerBound)));
> > - return (currentTerm != null);
> > +
> > + // no more sub-range enums available
> > + assert rangeBounds.size() == 0 && currentTerm == null;
> > + return false;
> > }
> >
> > /** Closes the enumeration to further activity, freeing resources.
> */
> >
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: java-dev-unsubscribe@lucene.apache.org
> For additional commands, e-mail: java-dev-help@lucene.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-dev-help@lucene.apache.org
Re: svn commit: r882977 - in /lucene/java/trunk: CHANGES.txt
src/java/org/apache/lucene/search/NumericRangeQuery.java
Posted by Simon Willnauer <si...@googlemail.com>.
Is the trunk open for 3.1 already?
simon
On Sat, Nov 21, 2009 at 8:49 PM, <us...@apache.org> wrote:
> Author: uschindler
> Date: Sat Nov 21 19:49:54 2009
> New Revision: 882977
>
> URL: http://svn.apache.org/viewvc?rev=882977&view=rev
> Log:
> LUCENE-2087: Remove recursion in NumericRangeTermEnum
>
> Modified:
> lucene/java/trunk/CHANGES.txt
> lucene/java/trunk/src/java/org/apache/lucene/search/NumericRangeQuery.java
>
> Modified: lucene/java/trunk/CHANGES.txt
> URL: http://svn.apache.org/viewvc/lucene/java/trunk/CHANGES.txt?rev=882977&r1=882976&r2=882977&view=diff
> ==============================================================================
> --- lucene/java/trunk/CHANGES.txt (original)
> +++ lucene/java/trunk/CHANGES.txt Sat Nov 21 19:49:54 2009
> @@ -18,7 +18,10 @@
> Optimizations
>
> * LUCENE-2086: When resolving deleted terms, do so in term sort order
> - for better performance (Bogdan Ghidireac via Mike McCandless)
> + for better performance. (Bogdan Ghidireac via Mike McCandless)
> +
> +* LUCENE-2087: Remove recursion in NumericRangeTermEnum.
> + (Uwe Schindler)
>
> Build
>
>
> Modified: lucene/java/trunk/src/java/org/apache/lucene/search/NumericRangeQuery.java
> URL: http://svn.apache.org/viewvc/lucene/java/trunk/src/java/org/apache/lucene/search/NumericRangeQuery.java?rev=882977&r1=882976&r2=882977&view=diff
> ==============================================================================
> --- lucene/java/trunk/src/java/org/apache/lucene/search/NumericRangeQuery.java (original)
> +++ lucene/java/trunk/src/java/org/apache/lucene/search/NumericRangeQuery.java Sat Nov 21 19:49:54 2009
> @@ -27,6 +27,7 @@
> import org.apache.lucene.util.StringHelper;
> import org.apache.lucene.index.IndexReader;
> import org.apache.lucene.index.Term;
> +import org.apache.lucene.index.TermEnum;
>
> /**
> * <p>A {@link Query} that matches numeric values within a
> @@ -486,6 +487,12 @@
> throw new UnsupportedOperationException("not implemented");
> }
>
> + /** this is a dummy, it is not used by this class. */
> + @Override
> + protected void setEnum(TermEnum tenum) {
> + throw new UnsupportedOperationException("not implemented");
> + }
> +
> /**
> * Compares if current upper bound is reached,
> * this also updates the term count for statistics.
> @@ -507,29 +514,35 @@
> assert actualEnum != null;
> if (actualEnum.next()) {
> currentTerm = actualEnum.term();
> - if (termCompare(currentTerm)) return true;
> + if (termCompare(currentTerm))
> + return true;
> }
> }
> +
> // if all above fails, we go forward to the next enum,
> // if one is available
> currentTerm = null;
> - if (rangeBounds.size() < 2) {
> - assert rangeBounds.size() == 0;
> - return false;
> - }
> - // close the current enum and read next bounds
> - if (actualEnum != null) {
> - actualEnum.close();
> - actualEnum = null;
> + while (rangeBounds.size() >= 2) {
> + assert rangeBounds.size() % 2 == 0;
> + // close the current enum and read next bounds
> + if (actualEnum != null) {
> + actualEnum.close();
> + actualEnum = null;
> + }
> + final String lowerBound = rangeBounds.removeFirst();
> + this.currentUpperBound = rangeBounds.removeFirst();
> + // create a new enum
> + actualEnum = reader.terms(termTemplate.createTerm(lowerBound));
> + currentTerm = actualEnum.term();
> + if (currentTerm != null && termCompare(currentTerm))
> + return true;
> + // clear the current term for next iteration
> + currentTerm = null;
> }
> - final String lowerBound = rangeBounds.removeFirst();
> - this.currentUpperBound = rangeBounds.removeFirst();
> - // this call recursively uses next(), if no valid term in
> - // next enum found.
> - // if this behavior is changed/modified in the superclass,
> - // this enum will not work anymore!
> - setEnum(reader.terms(termTemplate.createTerm(lowerBound)));
> - return (currentTerm != null);
> +
> + // no more sub-range enums available
> + assert rangeBounds.size() == 0 && currentTerm == null;
> + return false;
> }
>
> /** Closes the enumeration to further activity, freeing resources. */
>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-dev-help@lucene.apache.org