Marten 3.4 was release this week with bug fixes, some performance improvements (by using ImTools internally in place of ConcurrentDictionary
), and one giant new feature to support full text searching using Postgresql v10’s new full text searching features. Congratulations to the core Marten team (Babu Annamalai, Oscar Dudycz, and Joona-Pekka Kokko) for all their hard work on this release.
Taken from the Marten docs, here’s some of the usage:
Postgres contains built in Text Search functions. They enable the possibility to do more sophisticated searching through text fields. Marten gives possibility to define Full Text Indexes and perform queries on them. Currently three types of full Text Search functions are supported:
- regular Search (to_tsquery)
var posts = session.Query<BlogPost>()
.Where(x => x.Search("somefilter"))
.ToList();
- plain text Search (plainto_tsquery)
var posts = session.Query<BlogPost>()
.Where(x => x.PlainTextSearch("somefilter"))
.ToList();
- phrase Search (phraseto_tsquery)
var posts = session.Query<BlogPost>()
.Where(x => x.PhraseSearch("somefilter"))
.ToList();
All types of Text Searches can be combined with other Linq queries
var posts = session.Query<BlogPost>()
.Where(x => x.Category == "LifeStyle")
.Where(x => x.PhraseSearch("somefilter"))
.ToList();
They allow also to specify language (regConfig) of the text search query (by default english
is being used)
var posts = session.Query<BlogPost>()
.Where(x => x.PhraseSearch("somefilter", "italian"))
.ToList();
See also, Full Text indexes for information on setting up indexing on documents.
Congrats to the team. I like the API, looks really nice.