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

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

Introduction

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

Prototype

public abstract int maxDoc();

Source Link

Document

Returns one greater than the largest possible document number.

Usage

From source file:org.apache.jackrabbit.core.query.lucene.CachingIndexReader.java

License:Apache License

/**
 * Creates a new <code>CachingIndexReader</code> based on
 * <code>delegatee</code>/* www. j a v  a 2 s  .  co m*/
 *
 * @param delegatee the base <code>IndexReader</code>.
 * @param cache     a document number cache, or <code>null</code> if not
 *                  available to this reader.
 * @param initCache if the parent caches should be initialized
 *                  when this index reader is constructed.
 * @throws IOException if an error occurs while reading from the index.
 */
@SuppressWarnings("unchecked")
CachingIndexReader(IndexReader delegatee, DocNumberCache cache, boolean initCache) throws IOException {
    super(delegatee);
    this.cache = cache;
    this.inSegmentParents = new int[delegatee.maxDoc()];
    Arrays.fill(this.inSegmentParents, -1);
    this.shareableNodes = initShareableNodes(delegatee);
    this.cacheInitializer = new CacheInitializer(delegatee);
    if (initCache) {
        cacheInitializer.run();
    }
    // limit cache to 1% of maxDoc(), but at least 10.
    this.docNumber2id = Collections.synchronizedMap(new LRUMap(Math.max(10, delegatee.maxDoc() / 100)));
    this.termDocsCache = new TermDocsCache(delegatee, FieldNames.PROPERTIES);
}

From source file:org.apache.jackrabbit.core.query.lucene.CommittableIndexReader.java

License:Apache License

/**
 * Creates a new <code>CommittableIndexReader</code> based on <code>in</code>.
 *
 * @param in the <code>IndexReader</code> to wrap.
 *///from   w ww .  ja  va 2s .  com
CommittableIndexReader(IndexReader in) {
    super(in);
    modCount = in.getVersion();
    int maxDocs = in.maxDoc();
    for (int i = 0; i < maxDocs; i++) {
        if (in.isDeleted(i)) {
            deletedDocs.set(i);
        }
    }
}

From source file:org.apache.jackrabbit.core.query.lucene.MatchAllWeight.java

License:Apache License

/**
 * {@inheritDoc}/* w  w  w  .  j av a2  s.co m*/
 */
public Explanation explain(IndexReader reader, int doc) throws IOException {
    return new Explanation(Similarity.getDefault().idf(reader.maxDoc(), reader.maxDoc()), "matchAll");
}

From source file:org.apache.jackrabbit.core.query.lucene.SharedFieldCache.java

License:Apache License

/**
 * Creates a <code>ValueIndex</code> for a <code>field</code> and a term
 * <code>prefix</code>. The term prefix acts as the property name for the
 * shared <code>field</code>.
 * <p/>//w w  w  .  j  a v a 2s . co m
 * This method is an adapted version of: <code>FieldCacheImpl.getStringIndex()</code>
 *
 * @param reader     the <code>IndexReader</code>.
 * @param field      name of the shared field.
 * @param prefix     the property name, will be used as term prefix.
 * @return a ValueIndex that contains the field values and order
 *         information.
 * @throws IOException if an error occurs while reading from the index.
 */
public ValueIndex getValueIndex(IndexReader reader, String field, String prefix) throws IOException {

    if (reader instanceof ReadOnlyIndexReader) {
        reader = ((ReadOnlyIndexReader) reader).getBase();
    }

    field = field.intern();
    ValueIndex ret = lookup(reader, field, prefix);
    if (ret == null) {
        final int maxDocs = reader.maxDoc();
        Comparable<?>[] retArray = new Comparable<?>[maxDocs];
        Map<Integer, Integer> positions = new HashMap<Integer, Integer>();
        boolean usingSimpleComparable = true;
        int setValues = 0;
        if (maxDocs > 0) {
            IndexFormatVersion version = IndexFormatVersion.getVersion(reader);
            boolean hasPayloads = version.isAtLeast(IndexFormatVersion.V3);
            TermDocs termDocs;
            byte[] payload = null;
            int type;
            if (hasPayloads) {
                termDocs = reader.termPositions();
                payload = new byte[1];
            } else {
                termDocs = reader.termDocs();
            }
            TermEnum termEnum = reader.terms(new Term(field, prefix));
            try {
                if (termEnum.term() == null) {
                    throw new RuntimeException("no terms in field " + field);
                }
                do {
                    Term term = termEnum.term();
                    if (term.field() != field || !term.text().startsWith(prefix)) {
                        break;
                    }
                    final String value = termValueAsString(term, prefix);
                    termDocs.seek(term);
                    while (termDocs.next()) {
                        int termPosition = 0;
                        type = PropertyType.UNDEFINED;
                        if (hasPayloads) {
                            TermPositions termPos = (TermPositions) termDocs;
                            termPosition = termPos.nextPosition();
                            if (termPos.isPayloadAvailable()) {
                                payload = termPos.getPayload(payload, 0);
                                type = PropertyMetaData.fromByteArray(payload).getPropertyType();
                            }
                        }
                        setValues++;
                        Comparable<?> v = getValue(value, type);
                        int doc = termDocs.doc();
                        Comparable<?> ca = retArray[doc];
                        if (ca == null) {
                            if (usingSimpleComparable) {
                                // put simple value on the queue
                                positions.put(doc, termPosition);
                                retArray[doc] = v;
                            } else {
                                retArray[doc] = new ComparableArray(v, termPosition);
                            }
                        } else {
                            if (ca instanceof ComparableArray) {
                                ((ComparableArray) ca).insert(v, termPosition);
                            } else {
                                // transform all of the existing values from
                                // Comparable to ComparableArray
                                for (int pos : positions.keySet()) {
                                    retArray[pos] = new ComparableArray(retArray[pos], positions.get(pos));
                                }
                                positions = null;
                                usingSimpleComparable = false;
                                ComparableArray caNew = (ComparableArray) retArray[doc];
                                retArray[doc] = caNew.insert(v, termPosition);
                            }
                        }
                    }
                } while (termEnum.next());
            } finally {
                termDocs.close();
                termEnum.close();
            }
        }
        ValueIndex value = new ValueIndex(retArray, setValues);
        store(reader, field, prefix, value);
        return value;
    }
    return ret;
}

From source file:org.apache.jackrabbit.core.query.lucene.sort.AbstractFieldComparator.java

License:Apache License

@Override
public void setNextReader(IndexReader reader, int docBase) throws IOException {
    getIndexReaders(readers, reader);//from   w  ww.j  a va 2 s. co m

    int maxDoc = 0;
    starts = new int[readers.size() + 1];

    for (int i = 0; i < readers.size(); i++) {
        IndexReader r = readers.get(i);
        starts[i] = maxDoc;
        maxDoc += r.maxDoc();
    }
    starts[readers.size()] = maxDoc;
}

From source file:org.apache.jena.larq.TestLuceneNRT.java

License:Apache License

@Test
public void indexReaderOpenDirectory() throws Exception {
    IndexReader reader = IndexReader.open(directory);
    assertNotNull(reader);//from  www  .ja v a2  s.c o  m
    assertSame(directory, reader.directory());
    assertEquals(1, reader.getRefCount());
    assertTrue(reader.isCurrent());
    assertEquals(0, reader.maxDoc());
    close(reader);
    assertEquals(0, reader.getRefCount());
}

From source file:org.apache.jena.larq.TestLuceneNRT.java

License:Apache License

@Test
public void indexReaderOpenDirectoryAddDocument() throws Exception {
    IndexReader reader = IndexReader.open(directory);
    writer.addDocument(doc1);//from  w w w .ja va2 s  .c o m
    assertTrue(reader.isCurrent());
    assertEquals(1, writer.maxDoc());
    assertEquals(0, reader.maxDoc());
}

From source file:org.apache.jena.larq.TestLuceneNRT.java

License:Apache License

@Test
public void indexReaderOpenDirectoryAddDocumentAndCommit() throws Exception {
    IndexReader reader = IndexReader.open(directory);
    writer.addDocument(doc1);//from w ww . j  a v a2s. c o  m
    writer.commit();
    assertFalse(reader.isCurrent());
    assertEquals(1, writer.maxDoc());
    assertEquals(0, reader.maxDoc());
}

From source file:org.apache.jena.larq.TestLuceneNRT.java

License:Apache License

@Test
public void indexReaderOpenDirectoryDeleteDocumentAndCommit() throws Exception {
    Term term = new Term("foo", "bar1");
    IndexReader reader = IndexReader.open(directory);
    writer.addDocument(doc1);//from w  ww. java  2 s  .  c om
    writer.addDocument(doc2);
    writer.commit();

    assertEquals(2, writer.maxDoc());
    assertFalse(reader.isCurrent());
    assertEquals(0, reader.maxDoc());
    assertEquals(0, count(reader, term));

    reader = TestLARQUtils.openIfChanged(reader);
    assertTrue(reader.isCurrent());
    assertEquals(1, count(reader, term));

    writer.deleteDocuments(term);
    assertEquals(2, writer.maxDoc());
    assertEquals(1, count(reader, term));

    reader = TestLARQUtils.openIfChanged(reader);
    assertEquals(1, count(reader, term));

    writer.commit();
    reader = TestLARQUtils.openIfChanged(reader);
    assertEquals(2, writer.maxDoc());
    assertEquals(0, count(reader, term));

    reader = TestLARQUtils.openIfChanged(reader);
    assertEquals(0, count(reader, term));

    writer.forceMergeDeletes();
    assertEquals(1, writer.maxDoc());
    assertEquals(0, count(reader, term));
}

From source file:org.apache.jena.larq.TestLuceneNRT.java

License:Apache License

@Test
public void indexReaderOpenDirectoryReopen() throws Exception {
    IndexReader reader = IndexReader.open(directory);
    writer.addDocument(doc1);// w  ww . ja v a 2  s. co m
    writer.commit();

    assertFalse(reader.isCurrent());
    assertEquals(0, reader.maxDoc());
    reader = TestLARQUtils.openIfChanged(reader);
    assertTrue(reader.isCurrent());
    assertEquals(1, reader.maxDoc());

    reader = IndexReader.open(directory);
    assertTrue(reader.isCurrent());
    assertEquals(1, reader.maxDoc());
}