X-Git-Url: https://git.mdrn.pl/pylucene.git/blobdiff_plain/a2e61f0c04805cfcb8706176758d1283c7e3a55c..aaeed5504b982cf3545252ab528713250aa33eed:/lucene-java-3.4.0/lucene/backwards/src/test/org/apache/lucene/index/TestIndexWriterMerging.java diff --git a/lucene-java-3.4.0/lucene/backwards/src/test/org/apache/lucene/index/TestIndexWriterMerging.java b/lucene-java-3.4.0/lucene/backwards/src/test/org/apache/lucene/index/TestIndexWriterMerging.java deleted file mode 100644 index e37019d..0000000 --- a/lucene-java-3.4.0/lucene/backwards/src/test/org/apache/lucene/index/TestIndexWriterMerging.java +++ /dev/null @@ -1,303 +0,0 @@ -package org.apache.lucene.index; -/** - * Copyright 2006 The Apache Software Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import org.apache.lucene.store.Directory; -import org.apache.lucene.analysis.MockAnalyzer; -import org.apache.lucene.analysis.standard.StandardAnalyzer; -import org.apache.lucene.document.Document; -import org.apache.lucene.document.Field; -import org.apache.lucene.document.Field.Index; -import org.apache.lucene.document.Field.Store; -import org.apache.lucene.document.Field.TermVector; -import org.apache.lucene.index.IndexWriterConfig.OpenMode; -import org.apache.lucene.util.LuceneTestCase; - -import java.io.IOException; -import java.util.Random; - - -public class TestIndexWriterMerging extends LuceneTestCase -{ - - /** - * Tests that index merging (specifically addIndexes(Directory...)) doesn't - * change the index order of documents. - */ - public void testLucene() throws IOException { - int num=100; - - Directory indexA = newDirectory(); - Directory indexB = newDirectory(); - - fillIndex(random, indexA, 0, num); - boolean fail = verifyIndex(indexA, 0); - if (fail) - { - fail("Index a is invalid"); - } - - fillIndex(random, indexB, num, num); - fail = verifyIndex(indexB, num); - if (fail) - { - fail("Index b is invalid"); - } - - Directory merged = newDirectory(); - - IndexWriter writer = new IndexWriter( - merged, - newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random)). - setMergePolicy(newLogMergePolicy(2)) - ); - writer.setInfoStream(VERBOSE ? System.out : null); - writer.addIndexes(new Directory[]{indexA, indexB}); - writer.optimize(); - writer.close(); - - fail = verifyIndex(merged, 0); - - assertFalse("The merged index is invalid", fail); - indexA.close(); - indexB.close(); - merged.close(); - } - - private boolean verifyIndex(Directory directory, int startAt) throws IOException - { - boolean fail = false; - IndexReader reader = IndexReader.open(directory, true); - - int max = reader.maxDoc(); - for (int i = 0; i < max; i++) - { - Document temp = reader.document(i); - //System.out.println("doc "+i+"="+temp.getField("count").stringValue()); - //compare the index doc number to the value that it should be - if (!temp.getField("count").stringValue().equals((i + startAt) + "")) - { - fail = true; - System.out.println("Document " + (i + startAt) + " is returning document " + temp.getField("count").stringValue()); - } - } - reader.close(); - return fail; - } - - private void fillIndex(Random random, Directory dir, int start, int numDocs) throws IOException { - - IndexWriter writer = new IndexWriter( - dir, - newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random)). - setOpenMode(OpenMode.CREATE). - setMaxBufferedDocs(2). - setMergePolicy(newLogMergePolicy(2)) - ); - - for (int i = start; i < (start + numDocs); i++) - { - Document temp = new Document(); - temp.add(newField("count", (""+i), Field.Store.YES, Field.Index.NOT_ANALYZED)); - - writer.addDocument(temp); - } - writer.close(); - } - - // LUCENE-325: test expungeDeletes, when 2 singular merges - // are required - public void testExpungeDeletes() throws IOException { - Directory dir = newDirectory(); - IndexWriter writer = new IndexWriter(dir, newIndexWriterConfig( - TEST_VERSION_CURRENT, new MockAnalyzer(random)) - .setMaxBufferedDocs(2).setRAMBufferSizeMB( - IndexWriterConfig.DISABLE_AUTO_FLUSH)); - writer.setInfoStream(VERBOSE ? System.out : null); - Document document = new Document(); - - document = new Document(); - Field storedField = newField("stored", "stored", Field.Store.YES, - Field.Index.NO); - document.add(storedField); - Field termVectorField = newField("termVector", "termVector", - Field.Store.NO, Field.Index.NOT_ANALYZED, - Field.TermVector.WITH_POSITIONS_OFFSETS); - document.add(termVectorField); - for(int i=0;i<10;i++) - writer.addDocument(document); - writer.close(); - - IndexReader ir = IndexReader.open(dir, false); - assertEquals(10, ir.maxDoc()); - assertEquals(10, ir.numDocs()); - ir.deleteDocument(0); - ir.deleteDocument(7); - assertEquals(8, ir.numDocs()); - ir.close(); - - writer = new IndexWriter(dir, newIndexWriterConfig( TEST_VERSION_CURRENT, new MockAnalyzer(random)).setMergePolicy(newLogMergePolicy())); - assertEquals(8, writer.numDocs()); - assertEquals(10, writer.maxDoc()); - writer.expungeDeletes(); - assertEquals(8, writer.numDocs()); - writer.close(); - ir = IndexReader.open(dir, true); - assertEquals(8, ir.maxDoc()); - assertEquals(8, ir.numDocs()); - ir.close(); - dir.close(); - } - - // LUCENE-325: test expungeDeletes, when many adjacent merges are required - public void testExpungeDeletes2() throws IOException { - Directory dir = newDirectory(); - IndexWriter writer = new IndexWriter( - dir, - newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random)). - setMaxBufferedDocs(2). - setRAMBufferSizeMB(IndexWriterConfig.DISABLE_AUTO_FLUSH). - setMergePolicy(newLogMergePolicy(50)) - ); - - Document document = new Document(); - - document = new Document(); - Field storedField = newField("stored", "stored", Store.YES, - Index.NO); - document.add(storedField); - Field termVectorField = newField("termVector", "termVector", - Store.NO, Index.NOT_ANALYZED, - TermVector.WITH_POSITIONS_OFFSETS); - document.add(termVectorField); - for(int i=0;i<98;i++) - writer.addDocument(document); - writer.close(); - - IndexReader ir = IndexReader.open(dir, false); - assertEquals(98, ir.maxDoc()); - assertEquals(98, ir.numDocs()); - for(int i=0;i<98;i+=2) - ir.deleteDocument(i); - assertEquals(49, ir.numDocs()); - ir.close(); - - writer = new IndexWriter( - dir, - newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random)). - setMergePolicy(newLogMergePolicy(3)) - ); - assertEquals(49, writer.numDocs()); - writer.expungeDeletes(); - writer.close(); - ir = IndexReader.open(dir, true); - assertEquals(49, ir.maxDoc()); - assertEquals(49, ir.numDocs()); - ir.close(); - dir.close(); - } - - // LUCENE-325: test expungeDeletes without waiting, when - // many adjacent merges are required - public void testExpungeDeletes3() throws IOException { - Directory dir = newDirectory(); - IndexWriter writer = new IndexWriter( - dir, - newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random)). - setMaxBufferedDocs(2). - setRAMBufferSizeMB(IndexWriterConfig.DISABLE_AUTO_FLUSH). - setMergePolicy(newLogMergePolicy(50)) - ); - - Document document = new Document(); - - document = new Document(); - Field storedField = newField("stored", "stored", Field.Store.YES, - Field.Index.NO); - document.add(storedField); - Field termVectorField = newField("termVector", "termVector", - Field.Store.NO, Field.Index.NOT_ANALYZED, - Field.TermVector.WITH_POSITIONS_OFFSETS); - document.add(termVectorField); - for(int i=0;i<98;i++) - writer.addDocument(document); - writer.close(); - - IndexReader ir = IndexReader.open(dir, false); - assertEquals(98, ir.maxDoc()); - assertEquals(98, ir.numDocs()); - for(int i=0;i<98;i+=2) - ir.deleteDocument(i); - assertEquals(49, ir.numDocs()); - ir.close(); - - writer = new IndexWriter( - dir, - newIndexWriterConfig( TEST_VERSION_CURRENT, new MockAnalyzer(random)). - setMergePolicy(newLogMergePolicy(3)) - ); - writer.expungeDeletes(false); - writer.close(); - ir = IndexReader.open(dir, true); - assertEquals(49, ir.maxDoc()); - assertEquals(49, ir.numDocs()); - ir.close(); - dir.close(); - } - - // Just intercepts all merges & verifies that we are never - // merging a segment with >= 20 (maxMergeDocs) docs - private class MyMergeScheduler extends MergeScheduler { - @Override - synchronized public void merge(IndexWriter writer) - throws CorruptIndexException, IOException { - - while(true) { - MergePolicy.OneMerge merge = writer.getNextMerge(); - if (merge == null) { - break; - } - for(int i=0;i