예제 #1
0
        public virtual void  TestBuild()
        {
            try
            {
                IndexReader r = IndexReader.Open(userindex);

                spellChecker.ClearIndex();

                Addwords(r, "field1");
                int num_field1 = this.Numdoc();

                Addwords(r, "field2");
                int num_field2 = this.Numdoc();

                Assert.AreEqual(num_field2, num_field1 + 1);

                // test small word
                System.String[] similar = spellChecker.SuggestSimilar("fvie", 2);
                Assert.AreEqual(1, similar.Length);
                Assert.AreEqual(similar[0], "five");

                similar = spellChecker.SuggestSimilar("five", 2);
                Assert.AreEqual(1, similar.Length);
                Assert.AreEqual(similar[0], "nine");                 // don't suggest a word for itself

                similar = spellChecker.SuggestSimilar("fiv", 2);
                Assert.AreEqual(1, similar.Length);
                Assert.AreEqual(similar[0], "five");

                similar = spellChecker.SuggestSimilar("ive", 2);
                Assert.AreEqual(1, similar.Length);
                Assert.AreEqual(similar[0], "five");

                similar = spellChecker.SuggestSimilar("fives", 2);
                Assert.AreEqual(1, similar.Length);
                Assert.AreEqual(similar[0], "five");

                similar = spellChecker.SuggestSimilar("fie", 2);
                Assert.AreEqual(1, similar.Length);
                Assert.AreEqual(similar[0], "five");

                similar = spellChecker.SuggestSimilar("fi", 2);
                Assert.AreEqual(0, similar.Length);

                // test restraint to a field
                similar = spellChecker.SuggestSimilar("tousand", 10, r, "field1", false);
                Assert.AreEqual(0, similar.Length);                 // there isn't the term thousand in the field field1

                similar = spellChecker.SuggestSimilar("tousand", 10, r, "field2", false);
                Assert.AreEqual(1, similar.Length);                 // there is the term thousand in the field field2
            }
            catch (System.IO.IOException e)
            {
                System.Console.Error.WriteLine(e.StackTrace);
                Assert.Fail();
            }
        }