mirror of https://github.com/apache/lucene.git
re-indent, no functional change
git-svn-id: https://svn.apache.org/repos/asf/lucene/java/trunk@224373 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
7dd3e02a1a
commit
65cbe799af
|
@ -24,210 +24,171 @@ import java.util.List;
|
|||
|
||||
import org.apache.lucene.util.PriorityQueue;
|
||||
|
||||
|
||||
/**
|
||||
* Describe class <code>MultipleTermPositions</code> 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());
|
||||
public class MultipleTermPositions implements TermPositions {
|
||||
|
||||
Iterator i = termPositions.iterator();
|
||||
while (i.hasNext())
|
||||
{
|
||||
TermPositions tp = (TermPositions)i.next();
|
||||
if (tp.next())
|
||||
put(tp);
|
||||
}
|
||||
}
|
||||
private static final class TermPositionsQueue extends PriorityQueue {
|
||||
TermPositionsQueue(List termPositions) throws IOException {
|
||||
initialize(termPositions.size());
|
||||
|
||||
final TermPositions peek()
|
||||
{
|
||||
return (TermPositions)top();
|
||||
}
|
||||
|
||||
public final boolean lessThan(Object a, Object b)
|
||||
{
|
||||
return ((TermPositions)a).doc() < ((TermPositions)b).doc();
|
||||
}
|
||||
Iterator i = termPositions.iterator();
|
||||
while (i.hasNext()) {
|
||||
TermPositions tp = (TermPositions) i.next();
|
||||
if (tp.next())
|
||||
put(tp);
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
final TermPositions peek() {
|
||||
return (TermPositions) top();
|
||||
}
|
||||
|
||||
private int _doc;
|
||||
private int _freq;
|
||||
public final boolean lessThan(Object a, Object b) {
|
||||
return ((TermPositions) a).doc() < ((TermPositions) b).doc();
|
||||
}
|
||||
}
|
||||
|
||||
private TermPositionsQueue _termPositionsQueue;
|
||||
private IntQueue _posList;
|
||||
private static final class IntQueue {
|
||||
private int _arraySize = 16;
|
||||
private int _index = 0;
|
||||
private int _lastIndex = 0;
|
||||
private int[] _array = new int[_arraySize];
|
||||
|
||||
/**
|
||||
* Creates a new <code>MultipleTermPositions</code> instance.
|
||||
*
|
||||
* @param indexReader an <code>IndexReader</code> value
|
||||
* @param terms a <code>Term[]</code> value
|
||||
* @exception IOException if an error occurs
|
||||
*/
|
||||
public MultipleTermPositions(IndexReader indexReader, Term[] terms)
|
||||
throws IOException
|
||||
{
|
||||
List termPositions = new LinkedList();
|
||||
final void add(int i) {
|
||||
if (_lastIndex == _arraySize)
|
||||
growArray();
|
||||
|
||||
for (int i=0; i<terms.length; i++)
|
||||
termPositions.add(indexReader.termPositions(terms[i]));
|
||||
|
||||
_termPositionsQueue = new TermPositionsQueue(termPositions);
|
||||
_posList = new IntQueue();
|
||||
_array[_lastIndex++] = i;
|
||||
}
|
||||
|
||||
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;
|
||||
final int next() {
|
||||
return _array[_index++];
|
||||
}
|
||||
|
||||
public final int nextPosition()
|
||||
{
|
||||
return _posList.next();
|
||||
final void sort() {
|
||||
Arrays.sort(_array, _index, _lastIndex);
|
||||
}
|
||||
|
||||
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();
|
||||
final void clear() {
|
||||
_index = 0;
|
||||
_lastIndex = 0;
|
||||
}
|
||||
|
||||
public final int doc()
|
||||
{
|
||||
return _doc;
|
||||
final int size() {
|
||||
return (_lastIndex - _index);
|
||||
}
|
||||
|
||||
public final int freq()
|
||||
{
|
||||
return _freq;
|
||||
private void growArray() {
|
||||
int[] newArray = new int[_arraySize * 2];
|
||||
System.arraycopy(_array, 0, newArray, 0, _arraySize);
|
||||
_array = newArray;
|
||||
_arraySize *= 2;
|
||||
}
|
||||
}
|
||||
|
||||
public final void close()
|
||||
throws IOException
|
||||
{
|
||||
while (_termPositionsQueue.size() > 0)
|
||||
((TermPositions)_termPositionsQueue.pop()).close();
|
||||
}
|
||||
private int _doc;
|
||||
private int _freq;
|
||||
private TermPositionsQueue _termPositionsQueue;
|
||||
private IntQueue _posList;
|
||||
|
||||
/** Not implemented.
|
||||
* @throws UnsupportedOperationException
|
||||
*/
|
||||
public void seek(Term arg0)
|
||||
throws IOException
|
||||
{
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
/**
|
||||
* Creates a new <code>MultipleTermPositions</code> instance.
|
||||
*
|
||||
* @exception IOException
|
||||
*/
|
||||
public MultipleTermPositions(IndexReader indexReader, Term[] terms) throws IOException {
|
||||
List termPositions = new LinkedList();
|
||||
|
||||
/** Not implemented.
|
||||
* @throws UnsupportedOperationException
|
||||
*/
|
||||
public void seek(TermEnum termEnum) throws IOException {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
for (int i = 0; i < terms.length; i++)
|
||||
termPositions.add(indexReader.termPositions(terms[i]));
|
||||
|
||||
/** Not implemented.
|
||||
* @throws UnsupportedOperationException
|
||||
*/
|
||||
public int read(int[] arg0, int[] arg1)
|
||||
throws IOException
|
||||
{
|
||||
throw new UnsupportedOperationException();
|
||||
_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();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue