|
Lucene example source code file (MultipleTermPositions.java)
The Lucene MultipleTermPositions.java source code
package org.apache.lucene.index;
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import java.io.IOException;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import org.apache.lucene.util.PriorityQueue;
import org.apache.lucene.util.ArrayUtil;
/**
* Allows you to iterate over the {@link TermPositions} for multiple {@link Term}s as
* a single {@link TermPositions}.
*
*/
public class MultipleTermPositions implements TermPositions {
private static final class TermPositionsQueue extends PriorityQueue<TermPositions> {
TermPositionsQueue(List<TermPositions> termPositions) throws IOException {
initialize(termPositions.size());
for (TermPositions tp : termPositions) {
if (tp.next())
add(tp);
}
}
final TermPositions peek() {
return top();
}
@Override
public final boolean lessThan(TermPositions a, TermPositions b) {
return a.doc() < 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() {
_array = ArrayUtil.grow(_array, _arraySize+1);
_arraySize = _array.length;
}
}
private int _doc;
private int _freq;
private TermPositionsQueue _termPositionsQueue;
private IntQueue _posList;
/**
* Creates a new <code>MultipleTermPositions instance.
*
* @exception IOException
*/
public MultipleTermPositions(IndexReader indexReader, Term[] terms) throws IOException {
List<TermPositions> termPositions = new LinkedList
Other Lucene examples (source code examples)Here is a short list of links related to this Lucene MultipleTermPositions.java source code file: |
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.