Beispiel #1
0
        public void TestUpdateIndexCaseSensitive()
        {
            using var light = new LucenePoolLight(TempIndexDir);

            var wordA = "ABC";

            light.UpdateIndex(new Term(nameof(CodeWord.Word), wordA), new Document
            {
                new StringField(nameof(CodeWord.Word), wordA, Field.Store.YES),
                new StringField(nameof(CodeWord.WordLower), wordA.ToLowerInvariant(), Field.Store.YES)
            });

            var documents = light.Search(new MatchAllDocsQuery(), int.MaxValue);

            Assert.AreEqual(1, documents.Length);

            var wordB = "Abc";

            light.UpdateIndex(new Term(nameof(CodeWord.Word), wordB), new Document
            {
                new StringField(nameof(CodeWord.Word), wordB, Field.Store.YES),
                new StringField(nameof(CodeWord.WordLower), wordB.ToLowerInvariant(), Field.Store.YES)
            });

            documents = light.Search(new MatchAllDocsQuery(), int.MaxValue);
            Assert.AreEqual(2, documents.Length);

            light.UpdateIndex(new Term(nameof(CodeWord.Word), wordB), new Document
            {
                new StringField(nameof(CodeWord.Word), wordB, Field.Store.YES),
                new StringField(nameof(CodeWord.WordLower), wordB.ToLowerInvariant(), Field.Store.YES)
            });

            documents = light.Search(new MatchAllDocsQuery(), int.MaxValue);
            Assert.AreEqual(2, documents.Length);
            CollectionAssert.AreEquivalent(new[] { "ABC", "Abc" }, documents.Select(u => u.Get(nameof(CodeWord.Word))));
        }
Beispiel #2
0
        public void TestUpdateIndexWithRawDocuments()
        {
            using var light = new LucenePoolLight(TempIndexDir);

            light.BuildIndex(new[] {
                GetDocument(new CodeSource
                {
                    FileName      = "Dummy File 1",
                    FileExtension = "cs",
                    FilePath      = @"C:\Dummy File 1.cs",
                    Content       = "Test Content" + Environment.NewLine + "A New Line For Test"
                }),
                GetDocument(new CodeSource
                {
                    FileName      = "Dummy File 2",
                    FileExtension = "cs",
                    FilePath      = @"C:\Dummy File 2.cs",
                    Content       = "Test Content" + Environment.NewLine + "A New Line For Test"
                })
            }, true, true, true);

            light.UpdateIndex(new Term(nameof(CodeSource.FileName), "1"),
                              GetDocument(new CodeSource
            {
                FileName      = "Dummy File New 1",
                FileExtension = "cs",
                FilePath      = @"C:\Dummy File 2.cs",
                Content       = "New Content"
            }), out var rawDocuments);

            Assert.AreEqual(1, rawDocuments.Length);
            Assert.AreEqual("Test Content" + Environment.NewLine + "A New Line For Test", rawDocuments[0].Get(nameof(CodeSource.Content)), "Still old value");

            var documents = light.Search(new TermQuery(new Term(nameof(CodeSource.FileName), "1")), 10);

            Assert.AreEqual(1, documents.Length);
            Assert.AreEqual("New Content", documents[0].Get(nameof(CodeSource.Content)), "Content updated");
        }