本文整理汇总了Java中org.apache.lucene.index.LeafReader.getLiveDocs方法的典型用法代码示例。如果您正苦于以下问题:Java LeafReader.getLiveDocs方法的具体用法?Java LeafReader.getLiveDocs怎么用?Java LeafReader.getLiveDocs使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类org.apache.lucene.index.LeafReader
的用法示例。
在下文中一共展示了LeafReader.getLiveDocs方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: getSeqNosSet
import org.apache.lucene.index.LeafReader; //导入方法依赖的package包/类
private static FixedBitSet getSeqNosSet(final IndexReader reader, final long highestSeqNo) throws IOException {
// _seq_no are stored as doc values for the time being, so this is how we get them
// (as opposed to using an IndexSearcher or IndexReader)
final FixedBitSet bitSet = new FixedBitSet((int) highestSeqNo + 1);
final List<LeafReaderContext> leaves = reader.leaves();
if (leaves.isEmpty()) {
return bitSet;
}
for (int i = 0; i < leaves.size(); i++) {
final LeafReader leaf = leaves.get(i).reader();
final NumericDocValues values = leaf.getNumericDocValues(SeqNoFieldMapper.NAME);
if (values == null) {
continue;
}
final Bits bits = leaf.getLiveDocs();
for (int docID = 0; docID < leaf.maxDoc(); docID++) {
if (bits == null || bits.get(docID)) {
final long seqNo = values.get(docID);
assertFalse("should not have more than one document with the same seq_no[" + seqNo + "]", bitSet.get((int) seqNo));
bitSet.set((int) seqNo);
}
}
}
return bitSet;
}
示例2: lookupDocIdByPK
import org.apache.lucene.index.LeafReader; //导入方法依赖的package包/类
protected int[] lookupDocIdByPK(final IndexSearcher searcher,
final String... ids) throws IOException {
final List<LeafReaderContext> subReaders = searcher.getIndexReader().leaves();
final TermsEnum[] termsEnums = new TermsEnum[subReaders.size()];
final PostingsEnum[] docsEnums = new PostingsEnum[subReaders.size()];
for (int subIDX = 0; subIDX < subReaders.size(); subIDX++) {
termsEnums[subIDX] = subReaders.get(subIDX).reader().fields().terms("id").iterator();
}
int[] results = new int[ids.length];
for (int i = 0; i < results.length; i++) {
results[i] = -1;
}
// for each id given
for (int idx = 0; idx < ids.length; idx++) {
int base = 0;
final BytesRef id = new BytesRef(ids[idx]);
// for each leaf reader..
for (int subIDX = 0; subIDX < subReaders.size(); subIDX++) {
final LeafReader subReader = subReaders.get(subIDX).reader();
final TermsEnum termsEnum = termsEnums[subIDX];
// does the enumeration of ("id") terms from our reader contain the "id" field we're looking for?
if (termsEnum.seekExact(id)) {
final PostingsEnum docs = docsEnums[subIDX] = termsEnum.postings(docsEnums[subIDX],
0);
// okay, the reader contains it, get the postings ("docs+") for and check that they're there (NP check)
if (docs != null) {
final int docID = docs.nextDoc();
Bits liveDocs = subReader.getLiveDocs();
// But wait, maybe some of the docs have been deleted! Check that too..
if ((liveDocs == null || liveDocs.get(docID)) && docID != DocIdSetIterator.NO_MORE_DOCS) {
results[idx] = base + docID;
break;
}
}
}
base += subReader.maxDoc();
}
}
return results;
}