public void CanDelete() { using (var fullTextIndex = new FullTextIndex(StorageEnvironmentOptions.CreateMemoryOnly(), new DefaultAnalyzer())) { using (var indexer = fullTextIndex.CreateIndexer()) { indexer.NewIndexEntry(); indexer.AddField("Name", "Oren Eini"); indexer.NewIndexEntry(); indexer.AddField("Name", "Ayende Rahien"); indexer.Flush(); } using (var searcher = fullTextIndex.CreateSearcher()) { Assert.Equal(1, searcher.Query(new TermQuery("Name", "oren")).Count()); Assert.Equal(1, searcher.Query(new TermQuery("Name", "rahien")).Count()); } using (var indexer = fullTextIndex.CreateIndexer()) { indexer.DeleteIndexEntry(1); indexer.Flush(); } using (var searcher = fullTextIndex.CreateSearcher()) { Assert.Equal(0, searcher.Query(new TermQuery("Name", "oren")).Count()); Assert.Equal(1, searcher.Query(new TermQuery("Name", "rahien")).Count()); } using (var indexer = fullTextIndex.CreateIndexer()) { indexer.DeleteIndexEntry(2); indexer.Flush(); } using (var searcher = fullTextIndex.CreateSearcher()) { Assert.Equal(0, searcher.Query(new TermQuery("Name", "oren")).Count()); Assert.Equal(0, searcher.Query(new TermQuery("Name", "rahien")).Count()); } } }
public void CanDelete() { using (var fullTextIndex = new FullTextIndex(StorageEnvironmentOptions.CreateMemoryOnly(), new DefaultAnalyzer())) { using (var indexer = fullTextIndex.CreateIndexer()) { indexer.NewIndexEntry(); indexer.AddField("Name", "Oren Eini"); indexer.NewIndexEntry(); indexer.AddField("Name", "Ayende Rahien"); indexer.Flush(); } using (var searcher = fullTextIndex.CreateSearcher()) { Assert.Equal(1, searcher.Query(new TermQuery("Name", "oren")).Count()); Assert.Equal(1, searcher.Query(new TermQuery("Name", "rahien")).Count()); } using (var indexer = fullTextIndex.CreateIndexer()) { indexer.DeleteIndexEntry(1); indexer.Flush(); } using (var searcher = fullTextIndex.CreateSearcher()) { Assert.Equal(0, searcher.Query(new TermQuery("Name", "oren")).Count()); Assert.Equal(1, searcher.Query(new TermQuery("Name", "rahien")).Count()); } using (var indexer = fullTextIndex.CreateIndexer()) { indexer.DeleteIndexEntry(2); indexer.Flush(); } using (var searcher = fullTextIndex.CreateSearcher()) { Assert.Equal(0, searcher.Query(new TermQuery("Name", "oren")).Count()); Assert.Equal(0, searcher.Query(new TermQuery("Name", "rahien")).Count()); } } }
public void CanQueryAndSort() { using (var fullTextIndex = new FullTextIndex(StorageEnvironmentOptions.CreateMemoryOnly(), new DefaultAnalyzer())) { using (var indexer = fullTextIndex.CreateIndexer()) { indexer.NewIndexEntry(); indexer.AddField("Name", "Oren Eini"); indexer.AddField("Email", "*****@*****.**"); indexer.NewIndexEntry(); indexer.AddField("Name", "Arava Eini"); indexer.AddField("Email", "*****@*****.**"); indexer.Flush(); } using (var searcher = fullTextIndex.CreateSearcher()) { var results = searcher.QueryTop(new TermQuery("Name", "eini"), 5, sortBy: new Sorter("Email")); Assert.Equal(2, results.Results[0].DocumentId); Assert.Equal(1, results.Results[1].DocumentId); } } }
public void CanQueryWithInQuery() { using (var fullTextIndex = new FullTextIndex(StorageEnvironmentOptions.CreateMemoryOnly(), new DefaultAnalyzer())) { using (var indexer = fullTextIndex.CreateIndexer()) { indexer.NewIndexEntry(); indexer.AddField("Name", "David Boike"); indexer.NewIndexEntry(); indexer.AddField("Name", "Oren Eini"); indexer.NewIndexEntry(); indexer.AddField("Name", "Arava Eini"); indexer.NewIndexEntry(); indexer.AddField("Name", "Sean Epping"); indexer.NewIndexEntry(); indexer.AddField("Name", "Joe DeCock"); indexer.Flush(); } using (var searcher = fullTextIndex.CreateSearcher()) { var results = searcher.QueryTop(new InQuery("Name", "joe", "epping", "boike"), 5); Assert.Equal(3, results.Results.Length); } } }
public void CanQueryUsingBooleanQuery() { using (var fullTextIndex = new FullTextIndex(StorageEnvironmentOptions.CreateMemoryOnly(), new DefaultAnalyzer())) { using (var indexer = fullTextIndex.CreateIndexer()) { indexer.NewIndexEntry(); indexer.AddField("Name", "Oren"); indexer.AddField("Email", "*****@*****.**"); indexer.NewIndexEntry(); indexer.AddField("Name", "Oren"); indexer.AddField("Email", "*****@*****.**"); indexer.Flush(); } using (var searcher = fullTextIndex.CreateSearcher()) { Assert.Equal(1, searcher.Query(new BooleanQuery(QueryOperator.And, new TermQuery("Name", "oren"), new TermQuery("Email", "*****@*****.**"))).Count()); Assert.Equal(2, searcher.Query(new BooleanQuery(QueryOperator.Or, new TermQuery("Name", "oren"), new TermQuery("Email", "*****@*****.**"))).Count()); } } }
public void CanQueryUsingSingleTerm() { using (var fullTextIndex = new FullTextIndex(StorageEnvironmentOptions.CreateMemoryOnly(), new DefaultAnalyzer())) { using (var indexer = fullTextIndex.CreateIndexer()) { indexer.NewIndexEntry(); indexer.AddField("Name", "Oren Eini"); indexer.AddField("Email", "*****@*****.**"); indexer.NewIndexEntry(); indexer.AddField("Name", "Arava Eini"); indexer.AddField("Email", "*****@*****.**"); indexer.Flush(); } using (var searcher = fullTextIndex.CreateSearcher()) { Assert.Equal(1, searcher.Query(new TermQuery("Name", "oren")).Count()); Assert.Equal(0, searcher.Query(new TermQuery("Name", "rahien")).Count()); } } }
public void CanDeleteAndCompact() { using (var fullTextIndex = new FullTextIndex(StorageEnvironmentOptions.CreateMemoryOnly(), new DefaultAnalyzer())) { fullTextIndex.Conventions.AutoCompact = false; using (var indexer = fullTextIndex.CreateIndexer()) { indexer.NewIndexEntry(); indexer.Index("Name", "Oren Eini"); indexer.NewIndexEntry(); indexer.Index("Name", "Ayende Rahien"); indexer.Flush(); } using (var indexer = fullTextIndex.CreateIndexer()) { indexer.DeleteIndexEntry(1); indexer.Flush(); } using (var searcher = fullTextIndex.CreateSearcher()) { Assert.Equal(0, searcher.Query(new TermQuery("Name", "oren")).Count()); Assert.Equal(1, searcher.Query(new TermQuery("Name", "rahien")).Count()); } Assert.Equal(2, fullTextIndex.NumberOfDocuments); Assert.Equal(1, fullTextIndex.NumberOfDeletes); fullTextIndex.RunCompaction(); using (var searcher = fullTextIndex.CreateSearcher()) { Assert.Equal(0, searcher.Query(new TermQuery("Name", "oren")).Count()); Assert.Equal(1, searcher.Query(new TermQuery("Name", "rahien")).Count()); } Assert.Equal(1, fullTextIndex.NumberOfDocuments); Assert.Equal(0, fullTextIndex.NumberOfDeletes); } }
public void CanQueryOnEmptyindex() { using (var fti = new FullTextIndex(StorageEnvironmentOptions.CreateMemoryOnly(), new DefaultAnalyzer())) { using (var searcher = fti.CreateSearcher()) { Assert.Empty(searcher.Query(new TermQuery("Foo", "Arava"))); } } }
public void CanDoPhraseQuery() { using (var fullTextIndex = new FullTextIndex(StorageEnvironmentOptions.CreateMemoryOnly(), new DefaultAnalyzer())) { using (var indexer = fullTextIndex.CreateIndexer()) { indexer.NewIndexEntry(); indexer.AddField("PhraseText", "Not a match.", options: FieldOptions.TermPositions); indexer.NewIndexEntry(); indexer.AddField("PhraseText", "RavenDB is a very cool database to work with.", options: FieldOptions.TermPositions); indexer.Flush(); } using (var searcher = fullTextIndex.CreateSearcher()) { var results = searcher.QueryTop(new PhraseQuery("PhraseText", "ravendb", "cool", "database") { Slop = 4 }, 5); Assert.Equal(1, results.Results.Length); Assert.Equal(2, results.Results[0].DocumentId); } using (var searcher = fullTextIndex.CreateSearcher()) { var results = searcher.QueryTop(new PhraseQuery("PhraseText", "database", "cool", "ravendb") { Slop = 4 }, 5); Assert.Equal(0, results.Results.Length); } } }
public void CanQueryAndSortByTwoFields() { using (var fullTextIndex = new FullTextIndex(StorageEnvironmentOptions.CreateMemoryOnly(), new DefaultAnalyzer())) { using (var indexer = fullTextIndex.CreateIndexer()) { indexer.NewIndexEntry(); indexer.AddField("QueryFor", "yes"); indexer.AddField("FirstName", "David"); indexer.AddField("LastName", "Boike"); indexer.NewIndexEntry(); indexer.AddField("QueryFor", "yes"); indexer.AddField("FirstName", "Natalie"); indexer.AddField("LastName", "Boike"); indexer.NewIndexEntry(); indexer.AddField("QueryFor", "NO"); indexer.AddField("FirstName", "NO"); indexer.AddField("LastName", "NO"); indexer.NewIndexEntry(); indexer.AddField("QueryFor", "yes"); indexer.AddField("FirstName", "Oren"); indexer.AddField("LastName", "Eini"); indexer.NewIndexEntry(); indexer.AddField("QueryFor", "yes"); indexer.AddField("FirstName", "Arava"); indexer.AddField("LastName", "Eini"); indexer.Flush(); } using (var searcher = fullTextIndex.CreateSearcher()) { var results = searcher.QueryTop(new TermQuery("QueryFor", "yes"), 5, sortBy: new Sorter(new SortByTerm("LastName"), new SortByTerm("FirstName"))); Assert.Equal(4, results.Results.Length); Console.WriteLine("{0}, {1}, {2}, {3}", results.Results[0].DocumentId, results.Results[1].DocumentId, results.Results[2].DocumentId, results.Results[3].DocumentId); Assert.Equal(1, results.Results[0].DocumentId); Assert.Equal(2, results.Results[1].DocumentId); Assert.Equal(5, results.Results[2].DocumentId); Assert.Equal(4, results.Results[3].DocumentId); } } }
public void WillFilterStopWords() { using (var fti = new FullTextIndex(StorageEnvironmentOptions.CreateMemoryOnly(), new DefaultAnalyzer())) { using (var indexer = fti.CreateIndexer()) { indexer.NewIndexEntry(); indexer.AddField("Name", "Oren and Ayende"); indexer.Flush(); } using (var searcher = fti.CreateSearcher()) { Assert.Empty(searcher.Query(new TermQuery("Name", "and"))); } } }
public void CanQueryUsingMissingField() { using (var fti = new FullTextIndex(StorageEnvironmentOptions.CreateMemoryOnly(), new DefaultAnalyzer())) { using (var indexer = fti.CreateIndexer()) { indexer.NewIndexEntry(); indexer.AddField("Name", "Oren Eini"); indexer.Flush(); } using (var searcher = fti.CreateSearcher()) { Assert.Empty(searcher.Query(new TermQuery("Foo", "Arava"))); } } }
public void CanQueryWithInQuery() { using (var fullTextIndex = new FullTextIndex(StorageEnvironmentOptions.CreateMemoryOnly(), new DefaultAnalyzer())) { using (var indexer = fullTextIndex.CreateIndexer()) { indexer.NewIndexEntry(); indexer.AddField("Name", "David Boike"); indexer.NewIndexEntry(); indexer.AddField("Name", "Oren Eini"); indexer.NewIndexEntry(); indexer.AddField("Name", "Arava Eini"); indexer.NewIndexEntry(); indexer.AddField("Name", "Sean Epping"); indexer.NewIndexEntry(); indexer.AddField("Name", "Joe DeCock"); indexer.Flush(); } using (var searcher = fullTextIndex.CreateSearcher()) { var results = searcher.QueryTop(new InQuery("Name", "joe", "epping", "boike"), 5); Assert.Equal(3, results.Results.Length); } } }
public void CanQueryAndSort() { using (var fullTextIndex = new FullTextIndex(StorageEnvironmentOptions.CreateMemoryOnly(), new DefaultAnalyzer())) { using (var indexer = fullTextIndex.CreateIndexer()) { indexer.NewIndexEntry(); indexer.AddField("Name", "Oren Eini"); indexer.AddField("Email", "*****@*****.**"); indexer.NewIndexEntry(); indexer.AddField("Name", "Arava Eini"); indexer.AddField("Email", "*****@*****.**"); indexer.Flush(); } using (var searcher = fullTextIndex.CreateSearcher()) { var results = searcher.QueryTop(new TermQuery("Name", "eini"), 5, sortBy: new Sorter("Email")); Assert.Equal(2, results.Results[0].DocumentId); Assert.Equal(1, results.Results[1].DocumentId); } } }
public void CanQueryAndSortByTwoFields() { using (var fullTextIndex = new FullTextIndex(StorageEnvironmentOptions.CreateMemoryOnly(), new DefaultAnalyzer())) { using (var indexer = fullTextIndex.CreateIndexer()) { indexer.NewIndexEntry(); indexer.AddField("QueryFor", "yes"); indexer.AddField("FirstName", "David"); indexer.AddField("LastName", "Boike"); indexer.NewIndexEntry(); indexer.AddField("QueryFor", "yes"); indexer.AddField("FirstName", "Natalie"); indexer.AddField("LastName", "Boike"); indexer.NewIndexEntry(); indexer.AddField("QueryFor", "NO"); indexer.AddField("FirstName", "NO"); indexer.AddField("LastName", "NO"); indexer.NewIndexEntry(); indexer.AddField("QueryFor", "yes"); indexer.AddField("FirstName", "Oren"); indexer.AddField("LastName", "Eini"); indexer.NewIndexEntry(); indexer.AddField("QueryFor", "yes"); indexer.AddField("FirstName", "Arava"); indexer.AddField("LastName", "Eini"); indexer.Flush(); } using (var searcher = fullTextIndex.CreateSearcher()) { var results = searcher.QueryTop(new TermQuery("QueryFor", "yes"), 5, sortBy: new Sorter(new SortByTerm("LastName"), new SortByTerm("FirstName"))); Assert.Equal(4, results.Results.Length); Console.WriteLine("{0}, {1}, {2}, {3}", results.Results[0].DocumentId, results.Results[1].DocumentId, results.Results[2].DocumentId, results.Results[3].DocumentId); Assert.Equal(1, results.Results[0].DocumentId); Assert.Equal(2, results.Results[1].DocumentId); Assert.Equal(5, results.Results[2].DocumentId); Assert.Equal(4, results.Results[3].DocumentId); } } }
public void CanQueryOnEmptyindex() { using (var fti = new FullTextIndex(StorageEnvironmentOptions.CreateMemoryOnly(), new DefaultAnalyzer())) { using (var searcher = fti.CreateSearcher()) { Assert.Empty(searcher.Query(new TermQuery("Foo", "Arava"))); } } }
public void CanQueryUsingBooleanQuery() { using (var fullTextIndex = new FullTextIndex(StorageEnvironmentOptions.CreateMemoryOnly(), new DefaultAnalyzer())) { using (var indexer = fullTextIndex.CreateIndexer()) { indexer.NewIndexEntry(); indexer.AddField("Name", "Oren"); indexer.AddField("Email", "*****@*****.**"); indexer.NewIndexEntry(); indexer.AddField("Name", "Oren"); indexer.AddField("Email", "*****@*****.**"); indexer.Flush(); } using (var searcher = fullTextIndex.CreateSearcher()) { Assert.Equal(1, searcher.Query(new BooleanQuery(QueryOperator.And, new TermQuery("Name", "oren"), new TermQuery("Email", "*****@*****.**"))).Count()); Assert.Equal(2, searcher.Query(new BooleanQuery(QueryOperator.Or, new TermQuery("Name", "oren"), new TermQuery("Email", "*****@*****.**"))).Count()); } } }
public void CanDoPhraseQuery() { using (var fullTextIndex = new FullTextIndex(StorageEnvironmentOptions.CreateMemoryOnly(), new DefaultAnalyzer())) { using (var indexer = fullTextIndex.CreateIndexer()) { indexer.NewIndexEntry(); indexer.AddField("PhraseText", "Not a match.", options: FieldOptions.TermPositions); indexer.NewIndexEntry(); indexer.AddField("PhraseText", "RavenDB is a very cool database to work with.", options: FieldOptions.TermPositions); indexer.Flush(); } using (var searcher = fullTextIndex.CreateSearcher()) { var results = searcher.QueryTop(new PhraseQuery("PhraseText", "ravendb", "cool", "database") { Slop = 4 }, 5); Assert.Equal(1, results.Results.Length); Assert.Equal(2, results.Results[0].DocumentId); } using (var searcher = fullTextIndex.CreateSearcher()) { var results = searcher.QueryTop(new PhraseQuery("PhraseText", "database", "cool", "ravendb") { Slop = 4 }, 5); Assert.Equal(0, results.Results.Length); } } }
public void CanQueryUsingMissingTerm() { using (var fti = new FullTextIndex(StorageEnvironmentOptions.CreateMemoryOnly(), new DefaultAnalyzer())) { using (var indexer = fti.CreateIndexer()) { indexer.NewIndexEntry(); indexer.AddField("Name", "Oren Eini"); indexer.Flush(); } using (var searcher = fti.CreateSearcher()) { Assert.Empty(searcher.Query(new TermQuery("Name", "Arava"))); } } }
public void WillFilterStopWords() { using (var fti = new FullTextIndex(StorageEnvironmentOptions.CreateMemoryOnly(), new DefaultAnalyzer())) { using (var indexer = fti.CreateIndexer()) { indexer.NewIndexEntry(); indexer.AddField("Name", "Oren and Ayende"); indexer.Flush(); } using (var searcher = fti.CreateSearcher()) { Assert.Empty(searcher.Query(new TermQuery("Name", "and"))); } } }
public void CanQueryUsingSingleTerm() { using (var fullTextIndex = new FullTextIndex(StorageEnvironmentOptions.CreateMemoryOnly(), new DefaultAnalyzer())) { using (var indexer = fullTextIndex.CreateIndexer()) { indexer.NewIndexEntry(); indexer.AddField("Name", "Oren Eini"); indexer.AddField("Email", "*****@*****.**"); indexer.NewIndexEntry(); indexer.AddField("Name", "Arava Eini"); indexer.AddField("Email", "*****@*****.**"); indexer.Flush(); } using (var searcher = fullTextIndex.CreateSearcher()) { Assert.Equal(1, searcher.Query(new TermQuery("Name", "oren")).Count()); Assert.Equal(0, searcher.Query(new TermQuery("Name", "rahien")).Count()); } } }