Return-Path: Delivered-To: apmail-lucene-java-commits-archive@www.apache.org Received: (qmail 27271 invoked from network); 22 Jul 2005 17:41:53 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 22 Jul 2005 17:41:53 -0000 Received: (qmail 73578 invoked by uid 500); 22 Jul 2005 17:41:53 -0000 Delivered-To: apmail-lucene-java-commits-archive@lucene.apache.org Received: (qmail 73555 invoked by uid 500); 22 Jul 2005 17:41:52 -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 73541 invoked by uid 99); 22 Jul 2005 17:41:52 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 22 Jul 2005 10:41:52 -0700 X-ASF-Spam-Status: No, hits=-9.8 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [209.237.227.194] (HELO minotaur.apache.org) (209.237.227.194) by apache.org (qpsmtpd/0.29) with SMTP; Fri, 22 Jul 2005 10:41:47 -0700 Received: (qmail 27248 invoked by uid 65534); 22 Jul 2005 17:41:51 -0000 Message-ID: <20050722174151.27246.qmail@minotaur.apache.org> Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r224373 - /lucene/java/trunk/src/java/org/apache/lucene/index/MultipleTermPositions.java Date: Fri, 22 Jul 2005 17:41:51 -0000 To: java-commits@lucene.apache.org From: dnaber@apache.org X-Mailer: svnmailer-1.0.2 X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N Author: dnaber Date: Fri Jul 22 10:41:46 2005 New Revision: 224373 URL: http://svn.apache.org/viewcvs?rev=224373&view=rev Log: re-indent, no functional change Modified: lucene/java/trunk/src/java/org/apache/lucene/index/MultipleTermPositions.java Modified: lucene/java/trunk/src/java/org/apache/lucene/index/MultipleTermPositions.java URL: http://svn.apache.org/viewcvs/lucene/java/trunk/src/java/org/apache/lucene/index/MultipleTermPositions.java?rev=224373&r1=224372&r2=224373&view=diff ============================================================================== --- lucene/java/trunk/src/java/org/apache/lucene/index/MultipleTermPositions.java (original) +++ lucene/java/trunk/src/java/org/apache/lucene/index/MultipleTermPositions.java Fri Jul 22 10:41:46 2005 @@ -24,210 +24,171 @@ import org.apache.lucene.util.PriorityQueue; - /** * Describe class MultipleTermPositions here. - * + * * @author Anders Nielsen * @version 1.0 */ -public class MultipleTermPositions - implements TermPositions -{ - private static final class TermPositionsQueue - extends PriorityQueue - { - TermPositionsQueue(List termPositions) - throws IOException - { - initialize(termPositions.size()); - - Iterator i = termPositions.iterator(); - while (i.hasNext()) - { - TermPositions tp = (TermPositions)i.next(); - if (tp.next()) - put(tp); - } - } - - final TermPositions peek() - { - return (TermPositions)top(); - } - - public final boolean lessThan(Object a, Object b) - { - return ((TermPositions)a).doc() < ((TermPositions)b).doc(); - } - } - - private static final class IntQueue - { - private int _arraySize = 16; - - private int _index = 0; - private int _lastIndex = 0; - - private int[] _array = new int[_arraySize]; - - final void add(int i) - { - if (_lastIndex == _arraySize) - growArray(); - - _array[_lastIndex++] = i; - } - - final int next() - { - return _array[_index++]; - } - - final void sort() - { - Arrays.sort(_array, _index, _lastIndex); - } - - final void clear() - { - _index = 0; - _lastIndex = 0; - } - - final int size() - { - return (_lastIndex-_index); - } - - private void growArray() - { - int[] newArray = new int[_arraySize*2]; - System.arraycopy(_array, 0, newArray, 0, _arraySize); - _array = newArray; - _arraySize *= 2; - } - } - - private int _doc; - private int _freq; - - private TermPositionsQueue _termPositionsQueue; - private IntQueue _posList; - - /** - * Creates a new MultipleTermPositions instance. - * - * @param indexReader an IndexReader value - * @param terms a Term[] value - * @exception IOException if an error occurs - */ - public MultipleTermPositions(IndexReader indexReader, Term[] terms) - throws IOException - { - List termPositions = new LinkedList(); - - for (int i=0; i 0 && _termPositionsQueue.peek().doc() == _doc); - - _posList.sort(); - _freq = _posList.size(); - - return true; - } - - public final int nextPosition() - { - return _posList.next(); - } - - public final boolean skipTo(int target) - throws IOException - { - while (_termPositionsQueue.peek() != null && target > _termPositionsQueue.peek().doc()) - { - TermPositions tp = (TermPositions)_termPositionsQueue.pop(); - - if (tp.skipTo(target)) - _termPositionsQueue.put(tp); - else - tp.close(); - } - - return next(); - } - - public final int doc() - { - return _doc; - } - - public final int freq() - { - return _freq; - } - - public final void close() - throws IOException - { - while (_termPositionsQueue.size() > 0) - ((TermPositions)_termPositionsQueue.pop()).close(); - } - - /** Not implemented. - * @throws UnsupportedOperationException - */ - public void seek(Term arg0) - throws IOException - { - throw new UnsupportedOperationException(); - } - - /** Not implemented. - * @throws UnsupportedOperationException - */ - public void seek(TermEnum termEnum) throws IOException { - throw new UnsupportedOperationException(); - } - - /** Not implemented. - * @throws UnsupportedOperationException - */ - public int read(int[] arg0, int[] arg1) - throws IOException - { - throw new UnsupportedOperationException(); +public class MultipleTermPositions implements TermPositions { + + private static final class TermPositionsQueue extends PriorityQueue { + TermPositionsQueue(List termPositions) throws IOException { + initialize(termPositions.size()); + + Iterator i = termPositions.iterator(); + while (i.hasNext()) { + TermPositions tp = (TermPositions) i.next(); + if (tp.next()) + put(tp); + } + } + + final TermPositions peek() { + return (TermPositions) top(); + } + + public final boolean lessThan(Object a, Object b) { + return ((TermPositions) a).doc() < ((TermPositions) b).doc(); + } + } + + private static final class IntQueue { + private int _arraySize = 16; + private int _index = 0; + private int _lastIndex = 0; + private int[] _array = new int[_arraySize]; + + final void add(int i) { + if (_lastIndex == _arraySize) + growArray(); + + _array[_lastIndex++] = i; + } + + final int next() { + return _array[_index++]; + } + + final void sort() { + Arrays.sort(_array, _index, _lastIndex); + } + + final void clear() { + _index = 0; + _lastIndex = 0; + } + + final int size() { + return (_lastIndex - _index); + } + + private void growArray() { + int[] newArray = new int[_arraySize * 2]; + System.arraycopy(_array, 0, newArray, 0, _arraySize); + _array = newArray; + _arraySize *= 2; } + } + + private int _doc; + private int _freq; + private TermPositionsQueue _termPositionsQueue; + private IntQueue _posList; + + /** + * Creates a new MultipleTermPositions instance. + * + * @exception IOException + */ + public MultipleTermPositions(IndexReader indexReader, Term[] terms) throws IOException { + List termPositions = new LinkedList(); + + for (int i = 0; i < terms.length; i++) + termPositions.add(indexReader.termPositions(terms[i])); + + _termPositionsQueue = new TermPositionsQueue(termPositions); + _posList = new IntQueue(); + } + + public final boolean next() throws IOException { + if (_termPositionsQueue.size() == 0) + return false; + + _posList.clear(); + _doc = _termPositionsQueue.peek().doc(); + + TermPositions tp; + do { + tp = _termPositionsQueue.peek(); + + for (int i = 0; i < tp.freq(); i++) + _posList.add(tp.nextPosition()); + + if (tp.next()) + _termPositionsQueue.adjustTop(); + else { + _termPositionsQueue.pop(); + tp.close(); + } + } while (_termPositionsQueue.size() > 0 && _termPositionsQueue.peek().doc() == _doc); + + _posList.sort(); + _freq = _posList.size(); + + return true; + } + + public final int nextPosition() { + return _posList.next(); + } + + public final boolean skipTo(int target) throws IOException { + while (_termPositionsQueue.peek() != null && target > _termPositionsQueue.peek().doc()) { + TermPositions tp = (TermPositions) _termPositionsQueue.pop(); + if (tp.skipTo(target)) + _termPositionsQueue.put(tp); + else + tp.close(); + } + return next(); + } + + public final int doc() { + return _doc; + } + + public final int freq() { + return _freq; + } + + public final void close() throws IOException { + while (_termPositionsQueue.size() > 0) + ((TermPositions) _termPositionsQueue.pop()).close(); + } + + /** + * Not implemented. + * @throws UnsupportedOperationException + */ + public void seek(Term arg0) throws IOException { + throw new UnsupportedOperationException(); + } + + /** + * Not implemented. + * @throws UnsupportedOperationException + */ + public void seek(TermEnum termEnum) throws IOException { + throw new UnsupportedOperationException(); + } + + /** + * Not implemented. + * @throws UnsupportedOperationException + */ + public int read(int[] arg0, int[] arg1) throws IOException { + throw new UnsupportedOperationException(); + } }