List of usage examples for org.apache.lucene.index DirectoryReader openIfChanged
public static DirectoryReader openIfChanged(DirectoryReader oldReader) throws IOException
From source file:org.elasticsearch.common.lucene.uid.VersionsTests.java
License:Apache License
public static DirectoryReader reopen(DirectoryReader reader, boolean newReaderExpected) throws IOException { DirectoryReader newReader = DirectoryReader.openIfChanged(reader); if (newReader != null) { reader.close();//from w ww .j a v a 2s . co m } else { assertFalse(newReaderExpected); } return newReader; }
From source file:org.elasticsearch.deps.lucene.SimpleLuceneTests.java
License:Apache License
@Test public void testAddDocAfterPrepareCommit() throws Exception { Directory dir = new RAMDirectory(); IndexWriter indexWriter = new IndexWriter(dir, new IndexWriterConfig(Lucene.VERSION, Lucene.STANDARD_ANALYZER)); Document document = new Document(); document.add(new TextField("_id", "1", Field.Store.YES)); indexWriter.addDocument(document);//from w ww.ja v a2s .co m DirectoryReader reader = DirectoryReader.open(indexWriter, true); assertThat(reader.numDocs(), equalTo(1)); indexWriter.prepareCommit(); // Returns null b/c no changes. assertThat(DirectoryReader.openIfChanged(reader), equalTo(null)); document = new Document(); document.add(new TextField("_id", "2", Field.Store.YES)); indexWriter.addDocument(document); indexWriter.commit(); reader = DirectoryReader.openIfChanged(reader); assertThat(reader.numDocs(), equalTo(2)); }
From source file:org.elasticsearch.deps.lucene.SimpleLuceneTests.java
License:Apache License
private DirectoryReader refreshReader(DirectoryReader reader) throws IOException { DirectoryReader oldReader = reader;//from w w w.j a va2 s . c o m reader = DirectoryReader.openIfChanged(reader); if (reader != oldReader) { oldReader.close(); } return reader; }
From source file:org.elasticsearch.index.cache.filter.FilterCacheTests.java
License:Apache License
private DirectoryReader refreshReader(DirectoryReader reader) throws IOException { IndexReader oldReader = reader;// w w w . j av a 2s . c o m reader = DirectoryReader.openIfChanged(reader); if (reader != oldReader) { oldReader.close(); } return reader; }
From source file:org.elasticsearch.index.store.DistributorInTheWildTest.java
License:Apache License
@Override protected void doSearching(ExecutorService es, long stopTime) throws Exception { boolean anyOpenDelFiles = false; DirectoryReader r = DirectoryReader.open(writer, true); while (System.currentTimeMillis() < stopTime && !failed.get()) { if (random().nextBoolean()) { if (VERBOSE) { logger.info("TEST: now reopen r=" + r); }/*from w ww . j ava2 s . c om*/ final DirectoryReader r2 = DirectoryReader.openIfChanged(r); if (r2 != null) { r.close(); r = r2; } } else { if (VERBOSE) { logger.info("TEST: now close reader=" + r); } r.close(); writer.commit(); final Set<String> openDeletedFiles = getOpenDeletedFiles(dir); if (openDeletedFiles.size() > 0) { logger.info("OBD files: " + openDeletedFiles); } anyOpenDelFiles |= openDeletedFiles.size() > 0; //assertEquals("open but deleted: " + openDeletedFiles, 0, openDeletedFiles.size()); if (VERBOSE) { logger.info("TEST: now open"); } r = DirectoryReader.open(writer, true); } if (VERBOSE) { logger.info("TEST: got new reader=" + r); } //logger.info("numDocs=" + r.numDocs() + " //openDelFileCount=" + dir.openDeleteFileCount()); if (r.numDocs() > 0) { fixedSearcher = new IndexSearcher(r, es); smokeTestSearcher(fixedSearcher); runSearchThreads(System.currentTimeMillis() + 500); } } r.close(); //logger.info("numDocs=" + r.numDocs() + " openDelFileCount=" + dir.openDeleteFileCount()); final Set<String> openDeletedFiles = getOpenDeletedFiles(dir); if (openDeletedFiles.size() > 0) { logger.info("OBD files: " + openDeletedFiles); } anyOpenDelFiles |= openDeletedFiles.size() > 0; assertFalse("saw non-zero open-but-deleted count", anyOpenDelFiles); }
From source file:org.elasticsearch.test.unit.common.lucene.uid.UidFieldTests.java
License:Apache License
@Test public void testUidField() throws Exception { IndexWriter writer = new IndexWriter(new RAMDirectory(), new IndexWriterConfig(Lucene.VERSION, Lucene.STANDARD_ANALYZER)); DirectoryReader directoryReader = DirectoryReader.open(writer, true); AtomicReader atomicReader = SlowCompositeReaderWrapper.wrap(directoryReader); MatcherAssert.assertThat(UidField.loadVersion(atomicReader.getContext(), new Term("_uid", "1")), equalTo(-1l));/* w w w .j a va 2 s. c om*/ Document doc = new Document(); doc.add(new Field("_uid", "1", UidFieldMapper.Defaults.FIELD_TYPE)); writer.addDocument(doc); directoryReader = DirectoryReader.openIfChanged(directoryReader); atomicReader = SlowCompositeReaderWrapper.wrap(directoryReader); assertThat(UidField.loadVersion(atomicReader.getContext(), new Term("_uid", "1")), equalTo(-2l)); assertThat(UidField.loadDocIdAndVersion(atomicReader.getContext(), new Term("_uid", "1")).version, equalTo(-2l)); doc = new Document(); doc.add(new UidField("_uid", "1", 1)); writer.updateDocument(new Term("_uid", "1"), doc); directoryReader = DirectoryReader.openIfChanged(directoryReader); atomicReader = SlowCompositeReaderWrapper.wrap(directoryReader); assertThat(UidField.loadVersion(atomicReader.getContext(), new Term("_uid", "1")), equalTo(1l)); assertThat(UidField.loadDocIdAndVersion(atomicReader.getContext(), new Term("_uid", "1")).version, equalTo(1l)); doc = new Document(); UidField uid = new UidField("_uid", "1", 2); doc.add(uid); writer.updateDocument(new Term("_uid", "1"), doc); directoryReader = DirectoryReader.openIfChanged(directoryReader); atomicReader = SlowCompositeReaderWrapper.wrap(directoryReader); assertThat(UidField.loadVersion(atomicReader.getContext(), new Term("_uid", "1")), equalTo(2l)); assertThat(UidField.loadDocIdAndVersion(atomicReader.getContext(), new Term("_uid", "1")).version, equalTo(2l)); // test reuse of uid field doc = new Document(); uid.version(3); doc.add(uid); writer.updateDocument(new Term("_uid", "1"), doc); directoryReader = DirectoryReader.openIfChanged(directoryReader); atomicReader = SlowCompositeReaderWrapper.wrap(directoryReader); assertThat(UidField.loadVersion(atomicReader.getContext(), new Term("_uid", "1")), equalTo(3l)); assertThat(UidField.loadDocIdAndVersion(atomicReader.getContext(), new Term("_uid", "1")).version, equalTo(3l)); writer.deleteDocuments(new Term("_uid", "1")); directoryReader = DirectoryReader.openIfChanged(directoryReader); atomicReader = SlowCompositeReaderWrapper.wrap(directoryReader); assertThat(UidField.loadVersion(atomicReader.getContext(), new Term("_uid", "1")), equalTo(-1l)); assertThat(UidField.loadDocIdAndVersion(atomicReader.getContext(), new Term("_uid", "1")), nullValue()); }
From source file:org.elasticsearch.xpack.core.security.authz.accesscontrol.DocumentSubsetReaderTests.java
License:Open Source License
/** Same test as in FieldSubsetReaderTests, test that core cache key (needed for NRT) is working */ public void testCoreCacheKey() throws Exception { Directory dir = newDirectory();/*from w w w .j a va2 s .com*/ IndexWriterConfig iwc = new IndexWriterConfig(null); iwc.setMaxBufferedDocs(100); iwc.setMergePolicy(NoMergePolicy.INSTANCE); IndexWriter iw = new IndexWriter(dir, iwc); // add two docs, id:0 and id:1 Document doc = new Document(); Field idField = new StringField("id", "", Field.Store.NO); doc.add(idField); idField.setStringValue("0"); iw.addDocument(doc); idField.setStringValue("1"); iw.addDocument(doc); // open reader DirectoryReader ir = ElasticsearchDirectoryReader.wrap(DirectoryReader.open(iw), new ShardId("_index", "_na_", 0)); ir = DocumentSubsetReader.wrap(ir, bitsetFilterCache, new MatchAllDocsQuery()); assertEquals(2, ir.numDocs()); assertEquals(1, ir.leaves().size()); // delete id:0 and reopen iw.deleteDocuments(new Term("id", "0")); DirectoryReader ir2 = DirectoryReader.openIfChanged(ir); // we should have the same cache key as before assertEquals(1, ir2.numDocs()); assertEquals(1, ir2.leaves().size()); assertSame(ir.leaves().get(0).reader().getCoreCacheHelper().getKey(), ir2.leaves().get(0).reader().getCoreCacheHelper().getKey()); // However we don't support caching on the reader cache key since we override deletes assertNull(ir.leaves().get(0).reader().getReaderCacheHelper()); assertNull(ir2.leaves().get(0).reader().getReaderCacheHelper()); TestUtil.checkReader(ir); IOUtils.close(ir, ir2, iw, dir); }
From source file:org.elasticsearch.xpack.core.security.authz.accesscontrol.FieldSubsetReaderTests.java
License:Open Source License
/** test that core cache key (needed for NRT) is working */ public void testCoreCacheKey() throws Exception { Directory dir = newDirectory();/* ww w .j a va2 s . co m*/ IndexWriterConfig iwc = new IndexWriterConfig(null); iwc.setMaxBufferedDocs(100); iwc.setMergePolicy(NoMergePolicy.INSTANCE); IndexWriter iw = new IndexWriter(dir, iwc); // add two docs, id:0 and id:1 Document doc = new Document(); Field idField = new StringField("id", "", Field.Store.NO); doc.add(idField); idField.setStringValue("0"); iw.addDocument(doc); idField.setStringValue("1"); iw.addDocument(doc); // open reader DirectoryReader ir = FieldSubsetReader.wrap(DirectoryReader.open(iw), new CharacterRunAutomaton(Automata.makeString("id"))); assertEquals(2, ir.numDocs()); assertEquals(1, ir.leaves().size()); // delete id:0 and reopen iw.deleteDocuments(new Term("id", "0")); DirectoryReader ir2 = DirectoryReader.openIfChanged(ir); // we should have the same cache key as before assertEquals(1, ir2.numDocs()); assertEquals(1, ir2.leaves().size()); assertSame(ir.leaves().get(0).reader().getCoreCacheHelper().getKey(), ir2.leaves().get(0).reader().getCoreCacheHelper().getKey()); TestUtil.checkReader(ir); IOUtils.close(ir, ir2, iw, dir); }
From source file:org.hip.vif.core.search.VIFIndexing.java
License:Open Source License
/** Creates a read-only <code>IndexReader</code> to read content documents from the index. * * @return {@link IndexReader}//from w w w . j av a2 s . c om * @throws CorruptIndexException * @throws IOException */ public synchronized IndexReader createContentIndexReader() throws CorruptIndexException, IOException { // NOPMD final IndexReader outReader = DirectoryReader.openIfChanged((DirectoryReader) contentIndexReader); if (outReader != null) { contentIndexReader.close(); contentIndexReader = outReader; } return contentIndexReader; }
From source file:org.hip.vif.core.search.VIFIndexing.java
License:Open Source License
/** Creates a read-only <code>IndexReader</code> to read member documents from the index. * * @return {@link IndexReader}//from w w w . java 2 s . com * @throws CorruptIndexException * @throws IOException */ public synchronized IndexReader createMemberIndexReader() throws CorruptIndexException, IOException { // NOPMD final IndexReader outReader = DirectoryReader.openIfChanged((DirectoryReader) memberIndexReader); if (outReader != null) { memberIndexReader.close(); memberIndexReader = outReader; } return memberIndexReader; }