public void Match() { using (var context = new BloggingContext(ConnectionString)) { context.Database.Log = Console.Out.WriteLine; var blog1 = new Blog { Name = "The quick brown fox jumps over the lazy dog." }; var blog2 = new Blog { Name = "Jackdaws loves my big sphinx of quartz." }; context.Blogs.Add(blog1); context.Blogs.Add(blog2); context.SaveChanges(); var foundBlog = context .Blogs .FirstOrDefault( x => NpgsqlTextFunctions.Match( NpgsqlTextFunctions.ToTsVector(x.Name), NpgsqlTextFunctions.ToTsQuery("jump & dog"))); Assert.That(foundBlog != null); Assert.That(foundBlog.Name, Is.EqualTo(blog1.Name)); } }
public void TsHeadline() { using (var context = new BloggingContext(ConnectionString)) { context.Database.Log = Console.Out.WriteLine; var blog1 = new Blog { Name = "cooky cookie piano pianos" }; context.Blogs.Add(blog1); var blog2 = new Blog { Name = "blue crab denominates elephant" }; context.Blogs.Add(blog2); context.SaveChanges(); var headlines = context .Blogs .Select( x => NpgsqlTextFunctions.TsHeadline( x.Name, NpgsqlTextFunctions.ToTsQuery("cookie"), "StartSel=<i> StopSel=</i>")) .ToList(); Assert.That(headlines.Count, Is.EqualTo(2)); Assert.That(headlines[0], Is.EqualTo("<i>cooky</i> <i>cookie</i> piano pianos")); Assert.That(headlines[1], Is.EqualTo(blog2.Name)); headlines = context .Blogs .Select( x => NpgsqlTextFunctions.TsHeadline( "english", x.Name, NpgsqlTextFunctions.ToTsQuery("piano"), "StartSel=<i> StopSel=</i>")) .ToList(); Assert.That(headlines.Count, Is.EqualTo(2)); Assert.That(headlines[0], Is.EqualTo("cooky cookie <i>piano</i> <i>pianos</i>")); Assert.That(headlines[1], Is.EqualTo(blog2.Name)); } }
public void NumNode() { using (var context = new BloggingContext(ConnectionString)) { context.Database.Log = Console.Out.WriteLine; var blog = new Blog { Name = "_" }; context.Blogs.Add(blog); context.SaveChanges(); var nodeCount = context .Blogs .Select(x => NpgsqlTextFunctions.NumNode(NpgsqlTextFunctions.ToTsQuery("(fat & rat) | cat"))) .FirstOrDefault(); Assert.That(nodeCount, Is.EqualTo(5)); } }
public void ConversionToTsQuery() { using (var context = new BloggingContext(ConnectionString)) { context.Database.Log = Console.Out.WriteLine; context.Blogs.Add(new Blog { Name = "_" }); context.SaveChanges(); const string expected = "'b' & 'c'"; var casted = context.Blogs.Select(x => NpgsqlTextFunctions.AsTsQuery(expected)).First(); Assert.That( NpgsqlTsQuery.Parse(casted).ToString(), Is.EqualTo(NpgsqlTsQuery.Parse(expected).ToString())); var converted = context.Blogs.Select(x => NpgsqlTextFunctions.ToTsQuery("b & c")).First(); Assert.That( NpgsqlTsQuery.Parse(converted).ToString(), Is.EqualTo(NpgsqlTsQuery.Parse(expected).ToString())); converted = context.Blogs.Select(x => NpgsqlTextFunctions.ToTsQuery("english", "b & c")).First(); Assert.That( NpgsqlTsQuery.Parse(converted).ToString(), Is.EqualTo(NpgsqlTsQuery.Parse(expected).ToString())); converted = context.Blogs.Select(x => NpgsqlTextFunctions.PlainToTsQuery("b & c")).First(); Assert.That( NpgsqlTsQuery.Parse(converted).ToString(), Is.EqualTo(NpgsqlTsQuery.Parse(expected).ToString())); converted = context.Blogs.Select(x => NpgsqlTextFunctions.PlainToTsQuery("english", "b & c")).First(); Assert.That( NpgsqlTsQuery.Parse(converted).ToString(), Is.EqualTo(NpgsqlTsQuery.Parse(expected).ToString())); } }
public void QueryTree() { using (var context = new BloggingContext(ConnectionString)) { context.Database.Log = Console.Out.WriteLine; var blog = new Blog { Name = "_" }; context.Blogs.Add(blog); context.SaveChanges(); var queryTree = context .Blogs .Select(x => NpgsqlTextFunctions.QueryTree(NpgsqlTextFunctions.ToTsQuery("foo & ! bar"))) .FirstOrDefault(); Assert.That( NpgsqlTsQuery.Parse(queryTree).ToString(), Is.EqualTo(NpgsqlTsQuery.Parse("'foo'").ToString())); } }