// different options for the same field public virtual void TestMixedOptions() { int numFields = TestUtil.NextInt(Random(), 1, 3); var docFactory = new RandomDocumentFactory(this, numFields, 10); foreach (var options1 in ValidOptions()) { foreach (var options2 in ValidOptions()) { if (options1 == options2) { continue; } using (Directory dir = NewDirectory()) { using (var writer = new RandomIndexWriter(Random(), dir)) { RandomDocument doc1 = docFactory.NewDocument(numFields, 20, options1); RandomDocument doc2 = docFactory.NewDocument(numFields, 20, options2); writer.AddDocument(AddId(doc1.ToDocument(), "1")); writer.AddDocument(AddId(doc2.ToDocument(), "2")); using (IndexReader reader = writer.Reader) { int doc1ID = DocID(reader, "1"); AssertEquals(doc1, reader.GetTermVectors(doc1ID)); int doc2ID = DocID(reader, "2"); AssertEquals(doc2, reader.GetTermVectors(doc2ID)); } } } } } }
public virtual void TestRandom() { RandomDocumentFactory docFactory = new RandomDocumentFactory(this, 5, 20); int numDocs = AtLeast(100); RandomDocument[] docs = new RandomDocument[numDocs]; for (int i = 0; i < numDocs; ++i) { docs[i] = docFactory.NewDocument(TestUtil.NextInt32(Random, 1, 3), TestUtil.NextInt32(Random, 10, 50), RandomOptions()); } using (Directory dir = NewDirectory()) using (RandomIndexWriter writer = new RandomIndexWriter(Random, dir, ClassEnvRule.similarity, ClassEnvRule.timeZone)) { for (int i = 0; i < numDocs; ++i) { writer.AddDocument(AddId(docs[i].ToDocument(), "" + i)); } using (IndexReader reader = writer.GetReader()) { for (int i = 0; i < numDocs; ++i) { int docID = DocID(reader, "" + i); AssertEquals(docs[i], reader.GetTermVectors(docID)); } } // reader.Dispose(); }// writer.Dispose();, dir.Dispose(); }
public virtual void TestRandom() { RandomDocumentFactory docFactory = new RandomDocumentFactory(this, 5, 20); int numDocs = AtLeast(100); RandomDocument[] docs = new RandomDocument[numDocs]; for (int i = 0; i < numDocs; ++i) { docs[i] = docFactory.NewDocument(TestUtil.NextInt(Random(), 1, 3), TestUtil.NextInt(Random(), 10, 50), RandomOptions()); } Directory dir = NewDirectory(); RandomIndexWriter writer = new RandomIndexWriter(Random(), dir); for (int i = 0; i < numDocs; ++i) { writer.AddDocument(AddId(docs[i].ToDocument(), "" + i)); } IndexReader reader = writer.Reader; for (int i = 0; i < numDocs; ++i) { int docID = DocID(reader, "" + i); AssertEquals(docs[i], reader.GetTermVectors(docID)); } reader.Dispose(); writer.Dispose(); dir.Dispose(); }
public virtual void TestLotsOfFields() { RandomDocumentFactory docFactory = new RandomDocumentFactory(this, 5000, 10); foreach (Options options in ValidOptions()) { using Directory dir = NewDirectory(); using RandomIndexWriter writer = new RandomIndexWriter(Random, dir); RandomDocument doc = docFactory.NewDocument(AtLeast(100), 5, options); writer.AddDocument(doc.ToDocument()); using IndexReader reader = writer.GetReader(); AssertEquals(doc, reader.GetTermVectors(0)); } }
public virtual void TestMerge() { RandomDocumentFactory docFactory = new RandomDocumentFactory(this, 5, 20); int numDocs = AtLeast(100); int numDeletes = Random.Next(numDocs); HashSet <int?> deletes = new HashSet <int?>(); while (deletes.Count < numDeletes) { deletes.Add(Random.Next(numDocs)); } foreach (Options options in ValidOptions()) { RandomDocument[] docs = new RandomDocument[numDocs]; for (int i = 0; i < numDocs; ++i) { docs[i] = docFactory.NewDocument(TestUtil.NextInt32(Random, 1, 3), AtLeast(10), options); } using (Directory dir = NewDirectory()) using (RandomIndexWriter writer = new RandomIndexWriter(Random, dir, ClassEnvRule.similarity, ClassEnvRule.timeZone)) { for (int i = 0; i < numDocs; ++i) { writer.AddDocument(AddId(docs[i].ToDocument(), "" + i)); if (Rarely()) { writer.Commit(); } } foreach (int delete in deletes) { writer.DeleteDocuments(new Term("id", "" + delete)); } // merge with deletes writer.ForceMerge(1); using (IndexReader reader = writer.GetReader()) { for (int i = 0; i < numDocs; ++i) { if (!deletes.Contains(i)) { int docID = DocID(reader, "" + i); AssertEquals(docs[i], reader.GetTermVectors(docID)); } } } // reader.Dispose(); }// writer.Dispose();, dir.Dispose(); } }
// run random tests from different threads to make sure the per-thread clones // don't share mutable data public virtual void TestClone() { RandomDocumentFactory docFactory = new RandomDocumentFactory(this, 5, 20); int numDocs = AtLeast(100); foreach (Options options in ValidOptions()) { RandomDocument[] docs = new RandomDocument[numDocs]; for (int i = 0; i < numDocs; ++i) { docs[i] = docFactory.NewDocument(TestUtil.NextInt32(Random, 1, 3), AtLeast(10), options); } AtomicObject <Exception> exception = new AtomicObject <Exception>(); using (Directory dir = NewDirectory()) using (RandomIndexWriter writer = new RandomIndexWriter(Random, dir, ClassEnvRule.similarity, ClassEnvRule.timeZone)) { for (int i = 0; i < numDocs; ++i) { writer.AddDocument(AddId(docs[i].ToDocument(), "" + i)); } using (IndexReader reader = writer.GetReader()) { for (int i = 0; i < numDocs; ++i) { int docID = DocID(reader, "" + i); AssertEquals(docs[i], reader.GetTermVectors(docID)); } ThreadClass[] threads = new ThreadClass[2]; for (int i = 0; i < threads.Length; ++i) { threads[i] = new ThreadAnonymousInnerClassHelper(this, numDocs, docs, reader, exception, i); } foreach (ThreadClass thread in threads) { thread.Start(); } foreach (ThreadClass thread in threads) { thread.Join(); } } // reader.Dispose(); }// writer.Dispose();, dir.Dispose(); Assert.IsNull(exception.Value, "One thread threw an exception"); } }
// only one doc with vectors public virtual void TestRareVectors() { RandomDocumentFactory docFactory = new RandomDocumentFactory(this, 10, 20); foreach (Options options in ValidOptions()) { int numDocs = AtLeast(200); int docWithVectors = Random.Next(numDocs); Document emptyDoc = new Document(); using (Directory dir = NewDirectory()) using (RandomIndexWriter writer = new RandomIndexWriter(Random, dir, ClassEnvRule.similarity, ClassEnvRule.timeZone)) { RandomDocument doc = docFactory.NewDocument(TestUtil.NextInt32(Random, 1, 3), 20, options); for (int i = 0; i < numDocs; ++i) { if (i == docWithVectors) { writer.AddDocument(AddId(doc.ToDocument(), "42")); } else { writer.AddDocument(emptyDoc); } } using (IndexReader reader = writer.GetReader()) { int docWithVectorsID = DocID(reader, "42"); for (int i = 0; i < 10; ++i) { int docID = Random.Next(numDocs); Fields fields = reader.GetTermVectors(docID); if (docID == docWithVectorsID) { AssertEquals(doc, fields); } else { Assert.IsNull(fields); } } Fields fields_ = reader.GetTermVectors(docWithVectorsID); AssertEquals(doc, fields_); } // reader.Dispose(); }// writer.Dispose();, dir.Dispose(); } }
public virtual void TestLotsOfFields() { RandomDocumentFactory docFactory = new RandomDocumentFactory(this, 500, 10); foreach (Options options in ValidOptions()) { Directory dir = NewDirectory(); RandomIndexWriter writer = new RandomIndexWriter(Random(), dir, ClassEnvRule.Similarity, ClassEnvRule.TimeZone); RandomDocument doc = docFactory.NewDocument(AtLeast(100), 5, options); writer.AddDocument(doc.ToDocument()); IndexReader reader = writer.Reader; AssertEquals(doc, reader.GetTermVectors(0)); reader.Dispose(); writer.Dispose(); dir.Dispose(); } }
public virtual void TestHighFreqs() { RandomDocumentFactory docFactory = new RandomDocumentFactory(this, 3, 5); foreach (Options options in ValidOptions()) { if (options == Options.NONE) { continue; } using Directory dir = NewDirectory(); using RandomIndexWriter writer = new RandomIndexWriter(Random, dir); RandomDocument doc = docFactory.NewDocument(TestUtil.NextInt32(Random, 1, 2), AtLeast(20000), options); writer.AddDocument(doc.ToDocument()); using IndexReader reader = writer.GetReader(); AssertEquals(doc, reader.GetTermVectors(0)); } }
public virtual void TestHighFreqs() { RandomDocumentFactory docFactory = new RandomDocumentFactory(this, 3, 5); foreach (Options options in ValidOptions()) { if (options == Options.NONE) { continue; } using (Directory dir = NewDirectory()) using (RandomIndexWriter writer = new RandomIndexWriter(Random(), dir, ClassEnvRule.Similarity, ClassEnvRule.TimeZone)) { RandomDocument doc = docFactory.NewDocument(TestUtil.NextInt(Random(), 1, 2), AtLeast(20000), options); writer.AddDocument(doc.ToDocument()); using (IndexReader reader = writer.Reader) AssertEquals(doc, reader.GetTermVectors(0)); } } }
// [Test] // LUCENENET NOTE: For now, we are overriding this test in every subclass to pull it into the right context for the subclass // only one doc with vectors public virtual void TestRareVectors() { RandomDocumentFactory docFactory = new RandomDocumentFactory(this, 10, 20); foreach (Options options in ValidOptions()) { int numDocs = AtLeast(200); int docWithVectors = Random().Next(numDocs); Document emptyDoc = new Document(); Directory dir = NewDirectory(); RandomIndexWriter writer = new RandomIndexWriter(Random(), dir, ClassEnvRule.Similarity, ClassEnvRule.TimeZone); RandomDocument doc = docFactory.NewDocument(TestUtil.NextInt(Random(), 1, 3), 20, options); for (int i = 0; i < numDocs; ++i) { if (i == docWithVectors) { writer.AddDocument(AddId(doc.ToDocument(), "42")); } else { writer.AddDocument(emptyDoc); } } IndexReader reader = writer.Reader; int docWithVectorsID = DocID(reader, "42"); for (int i = 0; i < 10; ++i) { int docID = Random().Next(numDocs); Fields fields = reader.GetTermVectors(docID); if (docID == docWithVectorsID) { AssertEquals(doc, fields); } else { Assert.IsNull(fields); } } Fields fields_ = reader.GetTermVectors(docWithVectorsID); AssertEquals(doc, fields_); reader.Dispose(); writer.Dispose(); dir.Dispose(); } }
// different options for the same field public virtual void TestMixedOptions() { int numFields = TestUtil.NextInt(Random(), 1, 3); RandomDocumentFactory docFactory = new RandomDocumentFactory(this, numFields, 10); foreach (Options options1 in ValidOptions()) { foreach (Options options2 in ValidOptions()) { if (options1 == options2) { continue; } Directory dir = NewDirectory(); RandomIndexWriter writer = new RandomIndexWriter(Random(), dir); RandomDocument doc1 = docFactory.NewDocument(numFields, 20, options1); RandomDocument doc2 = docFactory.NewDocument(numFields, 20, options2); writer.AddDocument(AddId(doc1.ToDocument(), "1")); writer.AddDocument(AddId(doc2.ToDocument(), "2")); IndexReader reader = writer.Reader; int doc1ID = DocID(reader, "1"); AssertEquals(doc1, reader.GetTermVectors(doc1ID)); int doc2ID = DocID(reader, "2"); AssertEquals(doc2, reader.GetTermVectors(doc2ID)); reader.Dispose(); writer.Dispose(); dir.Dispose(); } } }
// [Test] // LUCENENET NOTE: For now, we are overriding this test in every subclass to pull it into the right context for the subclass // run random tests from different threads to make sure the per-thread clones // don't share mutable data public virtual void TestClone() { RandomDocumentFactory docFactory = new RandomDocumentFactory(this, 5, 20); int numDocs = AtLeast(100); foreach (Options options in ValidOptions()) { RandomDocument[] docs = new RandomDocument[numDocs]; for (int i = 0; i < numDocs; ++i) { docs[i] = docFactory.NewDocument(TestUtil.NextInt(Random(), 1, 3), AtLeast(10), options); } Directory dir = NewDirectory(); RandomIndexWriter writer = new RandomIndexWriter(Random(), dir, ClassEnvRule.Similarity, ClassEnvRule.TimeZone); for (int i = 0; i < numDocs; ++i) { writer.AddDocument(AddId(docs[i].ToDocument(), "" + i)); } IndexReader reader = writer.Reader; for (int i = 0; i < numDocs; ++i) { int docID = DocID(reader, "" + i); AssertEquals(docs[i], reader.GetTermVectors(docID)); } AtomicObject<Exception> exception = new AtomicObject<Exception>(); ThreadClass[] threads = new ThreadClass[2]; for (int i = 0; i < threads.Length; ++i) { threads[i] = new ThreadAnonymousInnerClassHelper(this, numDocs, docs, reader, exception, i); } foreach (ThreadClass thread in threads) { thread.Start(); } foreach (ThreadClass thread in threads) { thread.Join(); } reader.Dispose(); writer.Dispose(); dir.Dispose(); Assert.IsNull(exception.Value, "One thread threw an exception"); } }
// [Test] // LUCENENET NOTE: For now, we are overriding this test in every subclass to pull it into the right context for the subclass public virtual void TestMerge() { RandomDocumentFactory docFactory = new RandomDocumentFactory(this, 5, 20); int numDocs = AtLeast(100); int numDeletes = Random().Next(numDocs); HashSet<int?> deletes = new HashSet<int?>(); while (deletes.Count < numDeletes) { deletes.Add(Random().Next(numDocs)); } foreach (Options options in ValidOptions()) { RandomDocument[] docs = new RandomDocument[numDocs]; for (int i = 0; i < numDocs; ++i) { docs[i] = docFactory.NewDocument(TestUtil.NextInt(Random(), 1, 3), AtLeast(10), options); } Directory dir = NewDirectory(); RandomIndexWriter writer = new RandomIndexWriter(Random(), dir, ClassEnvRule.Similarity, ClassEnvRule.TimeZone); for (int i = 0; i < numDocs; ++i) { writer.AddDocument(AddId(docs[i].ToDocument(), "" + i)); if (Rarely()) { writer.Commit(); } } foreach (int delete in deletes) { writer.DeleteDocuments(new Term("id", "" + delete)); } // merge with deletes writer.ForceMerge(1); IndexReader reader = writer.Reader; for (int i = 0; i < numDocs; ++i) { if (!deletes.Contains(i)) { int docID = DocID(reader, "" + i); AssertEquals(docs[i], reader.GetTermVectors(docID)); } } reader.Dispose(); writer.Dispose(); dir.Dispose(); } }
// [Test] // LUCENENET NOTE: For now, we are overriding this test in every subclass to pull it into the right context for the subclass public virtual void TestRandom() { RandomDocumentFactory docFactory = new RandomDocumentFactory(this, 5, 20); int numDocs = AtLeast(100); RandomDocument[] docs = new RandomDocument[numDocs]; for (int i = 0; i < numDocs; ++i) { docs[i] = docFactory.NewDocument(TestUtil.NextInt(Random(), 1, 3), TestUtil.NextInt(Random(), 10, 50), RandomOptions()); } Directory dir = NewDirectory(); RandomIndexWriter writer = new RandomIndexWriter(Random(), dir, ClassEnvRule.Similarity, ClassEnvRule.TimeZone); for (int i = 0; i < numDocs; ++i) { writer.AddDocument(AddId(docs[i].ToDocument(), "" + i)); } IndexReader reader = writer.Reader; for (int i = 0; i < numDocs; ++i) { int docID = DocID(reader, "" + i); AssertEquals(docs[i], reader.GetTermVectors(docID)); } reader.Dispose(); writer.Dispose(); dir.Dispose(); }
// [Test, Timeout(300000)] // LUCENENET NOTE: For now, we are overriding this test in every subclass to pull it into the right context for the subclass // different options for the same field public virtual void TestMixedOptions() { int numFields = TestUtil.NextInt(Random(), 1, 3); var docFactory = new RandomDocumentFactory(this, numFields, 10); foreach (var options1 in ValidOptions()) { foreach (var options2 in ValidOptions()) { if (options1 == options2) { continue; } using (Directory dir = NewDirectory()) { using (var writer = new RandomIndexWriter(Random(), dir, ClassEnvRule.Similarity, ClassEnvRule.TimeZone)) { RandomDocument doc1 = docFactory.NewDocument(numFields, 20, options1); RandomDocument doc2 = docFactory.NewDocument(numFields, 20, options2); writer.AddDocument(AddId(doc1.ToDocument(), "1")); writer.AddDocument(AddId(doc2.ToDocument(), "2")); using (IndexReader reader = writer.Reader) { int doc1ID = DocID(reader, "1"); AssertEquals(doc1, reader.GetTermVectors(doc1ID)); int doc2ID = DocID(reader, "2"); AssertEquals(doc2, reader.GetTermVectors(doc2ID)); } } } } } }
// [Test, LongRunningTest, Timeout(int.MaxValue)] // LUCENENET NOTE: For now, we are overriding this test in every subclass to pull it into the right context for the subclass public virtual void TestLotsOfFields() { RandomDocumentFactory docFactory = new RandomDocumentFactory(this, 500, 10); foreach (Options options in ValidOptions()) { Directory dir = NewDirectory(); RandomIndexWriter writer = new RandomIndexWriter(Random(), dir, ClassEnvRule.Similarity, ClassEnvRule.TimeZone); RandomDocument doc = docFactory.NewDocument(AtLeast(100), 5, options); writer.AddDocument(doc.ToDocument()); IndexReader reader = writer.Reader; AssertEquals(doc, reader.GetTermVectors(0)); reader.Dispose(); writer.Dispose(); dir.Dispose(); } }
// [Test] // LUCENENET NOTE: For now, we are overriding this test in every subclass to pull it into the right context for the subclass public virtual void TestHighFreqs() { RandomDocumentFactory docFactory = new RandomDocumentFactory(this, 3, 5); foreach (Options options in ValidOptions()) { if (options == Options.NONE) { continue; } using (Directory dir = NewDirectory()) using (RandomIndexWriter writer = new RandomIndexWriter(Random(), dir, ClassEnvRule.Similarity, ClassEnvRule.TimeZone)) { RandomDocument doc = docFactory.NewDocument(TestUtil.NextInt(Random(), 1, 2), AtLeast(20000), options); writer.AddDocument(doc.ToDocument()); using (IndexReader reader = writer.Reader) AssertEquals(doc, reader.GetTermVectors(0)); } } }