|
Lucene example source code file (MultipleTermPositions.java)
The Lucene MultipleTermPositions.java source codepackage 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-2021 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.