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

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

Introduction

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

Prototype

public boolean hasDeletions() 

Source Link

Document

Returns true if any documents have been deleted.

Usage

From source file:org.elasticsearch.xpack.core.security.authz.accesscontrol.DocumentSubsetReaderTests.java

License:Open Source License

public void testLiveDocs() throws Exception {
    int numDocs = scaledRandomIntBetween(16, 128);
    IndexWriter iw = new IndexWriter(directory,
            new IndexWriterConfig(new StandardAnalyzer()).setMergePolicy(NoMergePolicy.INSTANCE));

    for (int i = 0; i < numDocs; i++) {
        Document document = new Document();
        document.add(new StringField("field", "value" + i, Field.Store.NO));
        iw.addDocument(document);// w  ww  . j  a  v  a2 s  . co  m
    }

    iw.forceMerge(1);
    iw.close();

    openDirectoryReader();
    assertThat("should have one segment after force merge", directoryReader.leaves().size(), equalTo(1));

    for (int i = 0; i < numDocs; i++) {
        Query roleQuery = new TermQuery(new Term("field", "value" + i));
        DirectoryReader wrappedReader = DocumentSubsetReader.wrap(directoryReader, bitsetFilterCache,
                roleQuery);

        LeafReader leafReader = wrappedReader.leaves().get(0).reader();
        assertThat(leafReader.hasDeletions(), is(true));
        assertThat(leafReader.numDocs(), equalTo(1));
        Bits liveDocs = leafReader.getLiveDocs();
        assertThat(liveDocs.length(), equalTo(numDocs));
        for (int docId = 0; docId < numDocs; docId++) {
            if (docId == i) {
                assertThat("docId [" + docId + "] should match", liveDocs.get(docId), is(true));
            } else {
                assertThat("docId [" + docId + "] should not match", liveDocs.get(docId), is(false));
            }
        }
    }
}