Sorry, right, test passed on trunk, but it's still not valid even on trunk (I think?). Ie TermEnum.term() is undefined until you've called next?
Mike On Tue, Dec 8, 2009 at 10:18 AM, Uwe Schindler <u...@thetaphi.de> wrote: > 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 > > --------------------------------------------------------------------- To unsubscribe, e-mail: java-dev-unsubscr...@lucene.apache.org For additional commands, e-mail: java-dev-h...@lucene.apache.org