List of usage examples for org.apache.lucene.index IndexReader maxDoc
public abstract int maxDoc();
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()); }