Return-Path: Delivered-To: apmail-lucene-java-commits-archive@www.apache.org Received: (qmail 69509 invoked from network); 28 Nov 2006 18:18:36 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 28 Nov 2006 18:18:36 -0000 Received: (qmail 30588 invoked by uid 500); 28 Nov 2006 18:18:45 -0000 Delivered-To: apmail-lucene-java-commits-archive@lucene.apache.org Received: (qmail 30561 invoked by uid 500); 28 Nov 2006 18:18:45 -0000 Mailing-List: contact java-commits-help@lucene.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: java-dev@lucene.apache.org Delivered-To: mailing list java-commits@lucene.apache.org Received: (qmail 30546 invoked by uid 99); 28 Nov 2006 18:18:45 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 28 Nov 2006 10:18:45 -0800 X-ASF-Spam-Status: No, hits=-9.4 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 28 Nov 2006 10:18:35 -0800 Received: by eris.apache.org (Postfix, from userid 65534) id B64A11A9846; Tue, 28 Nov 2006 10:17:57 -0800 (PST) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r480147 - in /lucene/java/trunk: CHANGES.txt src/java/org/apache/lucene/index/MultiReader.java Date: Tue, 28 Nov 2006 18:17:57 -0000 To: java-commits@lucene.apache.org From: yonik@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20061128181757.B64A11A9846@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: yonik Date: Tue Nov 28 10:17:56 2006 New Revision: 480147 URL: http://svn.apache.org/viewvc?view=rev&rev=480147 Log: non-recursive MultiTermDocs.next,skipTo: LUCENE-729 Modified: lucene/java/trunk/CHANGES.txt 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?view=diff&rev=480147&r1=480146&r2=480147 ============================================================================== --- lucene/java/trunk/CHANGES.txt (original) +++ lucene/java/trunk/CHANGES.txt Tue Nov 28 10:17:56 2006 @@ -275,6 +275,10 @@ with calls to System.arraycopy instead, in DocumentWriter.java. (Nicolas Lalevee via Mike McCandless) + 13. LUCENE-729: Non-recursive skipTo and next implementation of + TermDocs for a MultiReader. The old implementation could + recurse up to the number of segments in the index. (Yonik Seeley) + Test Cases 1. Added TestTermScorer.java (Grant Ingersoll) 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?view=diff&rev=480147&r1=480146&r2=480147 ============================================================================== --- lucene/java/trunk/src/java/org/apache/lucene/index/MultiReader.java (original) +++ lucene/java/trunk/src/java/org/apache/lucene/index/MultiReader.java Tue Nov 28 10:17:56 2006 @@ -352,14 +352,17 @@ } public boolean next() throws IOException { - if (current != null && current.next()) { - return true; - } else if (pointer < readers.length) { - base = starts[pointer]; - current = termDocs(pointer++); - return next(); - } else - return false; + for(;;) { + if (current!=null && current.next()) { + return true; + } + else if (pointer < readers.length) { + base = starts[pointer]; + current = termDocs(pointer++); + } else { + return false; + } + } } /** Optimized implementation. */ @@ -385,16 +388,17 @@ } } - /* A Possible future optimization could skip entire segments */ + /* A Possible future optimization could skip entire segments */ public boolean skipTo(int target) throws IOException { - if (current != null && current.skipTo(target-base)) { - return true; - } else if (pointer < readers.length) { - base = starts[pointer]; - current = termDocs(pointer++); - return skipTo(target); - } else - return false; + for(;;) { + if (current != null && current.skipTo(target-base)) { + return true; + } else if (pointer < readers.length) { + base = starts[pointer]; + current = termDocs(pointer++); + } else + return false; + } } private TermDocs termDocs(int i) throws IOException {