Mike I checked,

it seems that you simply copied the code from flex, where the test must be
removed.

In trunk, I'll revert, test passes correctly. I was a little bit confused,
why it should not pass.

-----
Uwe Schindler
H.-H.-Meier-Allee 63, D-28213 Bremen
http://www.thetaphi.de
eMail: u...@thetaphi.de


> -----Original Message-----
> From: Uwe Schindler [mailto:u...@thetaphi.de]
> Sent: Tuesday, December 08, 2009 4:00 PM
> To: java-dev@lucene.apache.org
> Subject: RE: svn commit: r888398 - in /lucene/java/trunk: CHANGES.txt
> contrib/regex/src/test/org/apache/lucene/search/regex/TestRegexQuery.java
> src/java/org/apache/lucene/index/DirectoryReader.java
> src/java/org/apache/lucene/index/MultiReader.java
> 
> Mike,
> 
> the test for RegEx was correct, it uses getEnum() not getTermsEnum()! So
> the
> first term returned must be null, because the enum must be positioned on
> the
> first term (which was the case for old enums). If that is not the case
> such
> a query would at least hit one term. So in trunk this test is perfectly
> legal and important!
> 
> -----
> Uwe Schindler
> H.-H.-Meier-Allee 63, D-28213 Bremen
> http://www.thetaphi.de
> eMail: u...@thetaphi.de
> 
> 
> > -----Original Message-----
> > From: mikemcc...@apache.org [mailto:mikemcc...@apache.org]
> > Sent: Tuesday, December 08, 2009 2:47 PM
> > To: java-comm...@lucene.apache.org
> > Subject: svn commit: r888398 - in /lucene/java/trunk: CHANGES.txt
> >
> contrib/regex/src/test/org/apache/lucene/search/regex/TestRegexQuery.java
> > src/java/org/apache/lucene/index/DirectoryReader.java
> > src/java/org/apache/lucene/index/MultiReader.java
> >
> > Author: mikemccand
> > Date: Tue Dec  8 13:47:20 2009
> > New Revision: 888398
> >
> > URL: http://svn.apache.org/viewvc?rev=888398&view=rev
> > Log:
> > LUCENE-2136: optimization: if Multi/DirectoryReader only has a single
> > reader, delegate enums to it
> >
> > Modified:
> >     lucene/java/trunk/CHANGES.txt
> >
> >
> lucene/java/trunk/contrib/regex/src/test/org/apache/lucene/search/regex/Te
> > stRegexQuery.java
> >
> > lucene/java/trunk/src/java/org/apache/lucene/index/DirectoryReader.java
> >     lucene/java/trunk/src/java/org/apache/lucene/index/MultiReader.java
> >
> > Modified: lucene/java/trunk/CHANGES.txt
> > URL:
> >
> http://svn.apache.org/viewvc/lucene/java/trunk/CHANGES.txt?rev=888398&r1=8
> > 88397&r2=888398&view=diff
> >
> ==========================================================================
> > ====
> > --- lucene/java/trunk/CHANGES.txt (original)
> > +++ lucene/java/trunk/CHANGES.txt Tue Dec  8 13:47:20 2009
> > @@ -70,6 +70,11 @@
> >    lots of seeking (Mike McCandless, Uwe Schindler, Robert Muir, Yonik
> >    Seeley)
> >
> > +* LUCENE-2136: If the multi reader (DirectoryReader or MultiReader)
> > +  only has a single sub-reader, delegate all enum requests to it.
> > +  This avoid the overhead of using a PQ unecessarily.  (Mike
> > +  McCandless)
> > +
> >  Build
> >
> >  Test Cases
> >
> > Modified:
> >
> lucene/java/trunk/contrib/regex/src/test/org/apache/lucene/search/regex/Te
> > stRegexQuery.java
> > URL:
> >
> http://svn.apache.org/viewvc/lucene/java/trunk/contrib/regex/src/test/org/
> >
> apache/lucene/search/regex/TestRegexQuery.java?rev=888398&r1=888397&r2=888
> > 398&view=diff
> >
> ==========================================================================
> > ====
> > ---
> >
> lucene/java/trunk/contrib/regex/src/test/org/apache/lucene/search/regex/Te
> > stRegexQuery.java (original)
> > +++
> >
> lucene/java/trunk/contrib/regex/src/test/org/apache/lucene/search/regex/Te
> > stRegexQuery.java Tue Dec  8 13:47:20 2009
> > @@ -83,7 +83,6 @@
> >    public void testMatchAll() throws Exception {
> >      TermEnum terms = new RegexQuery(new Term(FN,
> > "jum.")).getEnum(searcher.getIndexReader());
> >      // no term should match
> > -    assertNull(terms.term());
> >      assertFalse(terms.next());
> >    }
> >
> >
> > Modified:
> > lucene/java/trunk/src/java/org/apache/lucene/index/DirectoryReader.java
> > URL:
> >
> http://svn.apache.org/viewvc/lucene/java/trunk/src/java/org/apache/lucene/
> > index/DirectoryReader.java?rev=888398&r1=888397&r2=888398&view=diff
> >
> ==========================================================================
> > ====
> > ---
> > lucene/java/trunk/src/java/org/apache/lucene/index/DirectoryReader.java
> > (original)
> > +++
> > lucene/java/trunk/src/java/org/apache/lucene/index/DirectoryReader.java
> > Tue Dec  8 13:47:20 2009
> > @@ -627,13 +627,23 @@
> >    @Override
> >    public TermEnum terms() throws IOException {
> >      ensureOpen();
> > -    return new MultiTermEnum(this, subReaders, starts, null);
> > +    if (subReaders.length == 1) {
> > +      // Optimize single segment case:
> > +      return subReaders[0].terms();
> > +    } else {
> > +      return new MultiTermEnum(this, subReaders, starts, null);
> > +    }
> >    }
> >
> >    @Override
> >    public TermEnum terms(Term term) throws IOException {
> >      ensureOpen();
> > -    return new MultiTermEnum(this, subReaders, starts, term);
> > +    if (subReaders.length == 1) {
> > +      // Optimize single segment case:
> > +      return subReaders[0].terms(term);
> > +    } else {
> > +      return new MultiTermEnum(this, subReaders, starts, term);
> > +    }
> >    }
> >
> >    @Override
> > @@ -648,13 +658,34 @@
> >    @Override
> >    public TermDocs termDocs() throws IOException {
> >      ensureOpen();
> > -    return new MultiTermDocs(this, subReaders, starts);
> > +    if (subReaders.length == 1) {
> > +      // Optimize single segment case:
> > +      return subReaders[0].termDocs();
> > +    } else {
> > +      return new MultiTermDocs(this, subReaders, starts);
> > +    }
> > +  }
> > +
> > +  @Override
> > +  public TermDocs termDocs(Term term) throws IOException {
> > +    ensureOpen();
> > +    if (subReaders.length == 1) {
> > +      // Optimize single segment case:
> > +      return subReaders[0].termDocs(term);
> > +    } else {
> > +      return super.termDocs(term);
> > +    }
> >    }
> >
> >    @Override
> >    public TermPositions termPositions() throws IOException {
> >      ensureOpen();
> > -    return new MultiTermPositions(this, subReaders, starts);
> > +    if (subReaders.length == 1) {
> > +      // Optimize single segment case:
> > +      return subReaders[0].termPositions();
> > +    } else {
> > +      return new MultiTermPositions(this, subReaders, starts);
> > +    }
> >    }
> >
> >    /**
> >
> > Modified:
> > lucene/java/trunk/src/java/org/apache/lucene/index/MultiReader.java
> > URL:
> >
> http://svn.apache.org/viewvc/lucene/java/trunk/src/java/org/apache/lucene/
> > index/MultiReader.java?rev=888398&r1=888397&r2=888398&view=diff
> >
> ==========================================================================
> > ====
> > --- lucene/java/trunk/src/java/org/apache/lucene/index/MultiReader.java
> > (original)
> > +++ lucene/java/trunk/src/java/org/apache/lucene/index/MultiReader.java
> > Tue Dec  8 13:47:20 2009
> > @@ -339,13 +339,23 @@
> >    @Override
> >    public TermEnum terms() throws IOException {
> >      ensureOpen();
> > -    return new MultiTermEnum(this, subReaders, starts, null);
> > +    if (subReaders.length == 1) {
> > +      // Optimize single segment case:
> > +      return subReaders[0].terms();
> > +    } else {
> > +      return new MultiTermEnum(this, subReaders, starts, null);
> > +    }
> >    }
> >
> >    @Override
> >    public TermEnum terms(Term term) throws IOException {
> >      ensureOpen();
> > -    return new MultiTermEnum(this, subReaders, starts, term);
> > +    if (subReaders.length == 1) {
> > +      // Optimize single segment case:
> > +      return subReaders[0].terms(term);
> > +    } else {
> > +      return new MultiTermEnum(this, subReaders, starts, term);
> > +    }
> >    }
> >
> >    @Override
> > @@ -360,13 +370,34 @@
> >    @Override
> >    public TermDocs termDocs() throws IOException {
> >      ensureOpen();
> > -    return new MultiTermDocs(this, subReaders, starts);
> > +    if (subReaders.length == 1) {
> > +      // Optimize single segment case:
> > +      return subReaders[0].termDocs();
> > +    } else {
> > +      return new MultiTermDocs(this, subReaders, starts);
> > +    }
> > +  }
> > +
> > +  @Override
> > +  public TermDocs termDocs(Term term) throws IOException {
> > +    ensureOpen();
> > +    if (subReaders.length == 1) {
> > +      // Optimize single segment case:
> > +      return subReaders[0].termDocs(term);
> > +    } else {
> > +      return super.termDocs(term);
> > +    }
> >    }
> >
> >    @Override
> >    public TermPositions termPositions() throws IOException {
> >      ensureOpen();
> > -    return new MultiTermPositions(this, subReaders, starts);
> > +    if (subReaders.length == 1) {
> > +      // Optimize single segment case:
> > +      return subReaders[0].termPositions();
> > +    } else {
> > +      return new MultiTermPositions(this, subReaders, starts);
> > +    }
> >    }
> >
> >    @Override
> >
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: java-dev-unsubscr...@lucene.apache.org
> For additional commands, e-mail: java-dev-h...@lucene.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: java-dev-h...@lucene.apache.org

Reply via email to