Example usage for org.apache.lucene.index IndexReader hasDeletions

List of usage examples for org.apache.lucene.index IndexReader hasDeletions

Introduction

In this page you can find the example usage for org.apache.lucene.index IndexReader hasDeletions.

Prototype

public boolean hasDeletions() 

Source Link

Document

Returns true if any documents have been deleted.

Usage

From source file:org.eclipse.rdf4j.sail.lucene.LuceneIndex.java

License:Open Source License

private static boolean isDeleted(IndexReader reader, int docId) {
    if (reader.hasDeletions()) {
        List<LeafReaderContext> leaves = reader.leaves();
        int size = leaves.size();
        for (int i = 0; i < size; i++) {
            Bits liveDocs = leaves.get(i).reader().getLiveDocs();
            if (docId < liveDocs.length()) {
                boolean isDeleted = !liveDocs.get(docId);
                if (isDeleted) {
                    return true;
                }// w  ww .  ja  v a 2 s  .  com
            }
        }
        return false;
    } else {
        return false;
    }
}

From source file:org.elasticsearch.search.aggregations.bucket.composite.SingleDimensionValuesSource.java

License:Apache License

/**
 * Returns true if a {@link SortedDocsProducer} should be used to optimize the execution.
 *//*w w w .  j  a v  a 2 s  .  c  o m*/
protected boolean checkIfSortedDocsIsApplicable(IndexReader reader, MappedFieldType fieldType) {
    if (fieldType == null || fieldType.indexOptions() == IndexOptions.NONE ||
    // inverse of the natural order
            reverseMul == -1) {
        return false;
    }

    if (reader.hasDeletions()
            && (reader.numDocs() == 0 || (double) reader.numDocs() / (double) reader.maxDoc() < 0.5)) {
        // do not use the index if it has more than 50% of deleted docs
        return false;
    }
    return true;
}

From source file:org.elasticsearch.search.aggregations.bucket.composite.SingleDimensionValuesSourceTests.java

License:Apache License

private static IndexReader mockIndexReader(int maxDoc, int numDocs) {
    IndexReader reader = mock(IndexReader.class);
    when(reader.hasDeletions()).thenReturn(maxDoc - numDocs > 0);
    when(reader.maxDoc()).thenReturn(maxDoc);
    when(reader.numDocs()).thenReturn(numDocs);
    return reader;
}

From source file:org.elasticsearch.search.query.TopDocsCollectorContext.java

License:Apache License

/**
 * Returns query total hit count if the <code>query</code> is a {@link MatchAllDocsQuery}
 * or a {@link TermQuery} and the <code>reader</code> has no deletions,
 * -1 otherwise.//  w  ww .  j av  a2 s .c o m
 */
static int shortcutTotalHitCount(IndexReader reader, Query query) throws IOException {
    while (true) {
        // remove wrappers that don't matter for counts
        // this is necessary so that we don't only optimize match_all
        // queries but also match_all queries that are nested in
        // a constant_score query
        if (query instanceof ConstantScoreQuery) {
            query = ((ConstantScoreQuery) query).getQuery();
        } else if (query instanceof BoostQuery) {
            query = ((BoostQuery) query).getQuery();
        } else {
            break;
        }
    }
    if (query.getClass() == MatchAllDocsQuery.class) {
        return reader.numDocs();
    } else if (query.getClass() == TermQuery.class && reader.hasDeletions() == false) {
        final Term term = ((TermQuery) query).getTerm();
        int count = 0;
        for (LeafReaderContext context : reader.leaves()) {
            count += context.reader().docFreq(term);
        }
        return count;
    } else {
        return -1;
    }
}

From source file:org.openrdf.sail.lucene4.LuceneIndex.java

License:BSD License

private static boolean isDeleted(IndexReader reader, int docId) {
    if (reader.hasDeletions()) {
        List<AtomicReaderContext> leaves = reader.leaves();
        int size = leaves.size();
        for (int i = 0; i < size; i++) {
            Bits liveDocs = leaves.get(i).reader().getLiveDocs();
            if (docId < liveDocs.length()) {
                boolean isDeleted = !liveDocs.get(docId);
                if (isDeleted) {
                    return true;
                }// w ww . j  a va2s . c om
            }
        }
        return false;
    } else {
        return false;
    }
}

From source file:org.springmodules.lucene.index.core.DefaultLuceneIndexTemplate.java

License:Apache License

public boolean hasDeletions() {
    IndexReader reader = IndexReaderFactoryUtils.getIndexReader(indexFactory);
    try {/*from w w  w  .  j a  v  a  2 s  .co  m*/
        return reader.hasDeletions();
    } finally {
        IndexReaderFactoryUtils.releaseIndexReader(indexFactory, reader);
    }
}