perf(search): trigram indexes for sender/domain filters (#17)
CI / backend (push) Successful in 50s
CI / frontend (push) Successful in 14s
Deploy Staging / deploy (push) Successful in 29s
Security / secrets (push) Successful in 4s
Security / dependencies (push) Successful in 58s
CI / backend (pull_request) Successful in 53s
CI / frontend (pull_request) Successful in 15s
Security / secrets (pull_request) Successful in 4s
Security / dependencies (pull_request) Successful in 56s
CI / backend (push) Successful in 50s
CI / frontend (push) Successful in 14s
Deploy Staging / deploy (push) Successful in 29s
Security / secrets (push) Successful in 4s
Security / dependencies (push) Successful in 58s
CI / backend (pull_request) Successful in 53s
CI / frontend (pull_request) Successful in 15s
Security / secrets (pull_request) Successful in 4s
Security / dependencies (pull_request) Successful in 56s
This commit was merged in pull request #17.
This commit is contained in:
@@ -75,6 +75,16 @@ public class AppDbContext : DbContext, IAppDbContext
|
||||
"setweight(to_tsvector('english', coalesce(\"BodyText\",'')), 'B')",
|
||||
stored: true);
|
||||
modelBuilder.Entity<Email>().HasIndex(e => e.SearchVector).HasMethod("GIN");
|
||||
|
||||
// Trigram GIN indexes so the sender/domain `.Contains()` filters in SearchService
|
||||
// (which translate to `LIKE '%x%'`, non-sargable on a btree) become index-accelerated.
|
||||
// Needs pg_trgm (enabled by the EnablePgTrgm migration).
|
||||
modelBuilder.Entity<Sender>().HasIndex(s => s.Address)
|
||||
.HasMethod("gin").HasOperators("gin_trgm_ops");
|
||||
modelBuilder.Entity<Sender>().HasIndex(s => s.DisplayName)
|
||||
.HasMethod("gin").HasOperators("gin_trgm_ops");
|
||||
modelBuilder.Entity<MailDomain>().HasIndex(d => d.Name)
|
||||
.HasMethod("gin").HasOperators("gin_trgm_ops");
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user