Найти тему
9 подписчиков

Сегодня при работе с EF я с удивлением обнаружил, что:

query = query.Where(test =>
test.SearchVector.Matches(filteringData.Text));
Где test.SearchVector это :
modelBuilder.Entity<Test>()
.HasGeneratedTsVectorColumn(
p => p.SearchVector,
"russian", // Text search config
p => new { p.Title, p.Description }) // Included properties
.HasIndex(p => p.SearchVector)
.HasMethod("GIN");
Не всегда выдает мне результат при полном совпадении слова. По всей видимости, Matches не работает здесь как полноценный ILike, а в лоб проверяет попали ли мы в набор слов без окончаний. Пришлось делать:
query = query.Where(test =>
test.SearchVector.Matches(filteringData.Text) ||
EF.Functions.ILike(test.Title, $"%{filteringData.Text}%") ||
EF.Functions.ILike(test.Description, $"%{filteringData.Text}%"));
Около минуты