// 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();
        }
Exemplo n.º 4
0
        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();
            }
        }
Exemplo n.º 9
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);
                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));
         }
     }
 }