Как объединить несколько ts_vectors с новым индексом выражения из Npgsql 5?

#postgresql #npgsql #ef-core-5.0

Вопрос:

Мы используем объединение ts_vectors для поддержки нескольких языков в некоторых столбцах. В старых версиях это было так:

 public class AddTsVectorIndexes : Migration
{
    protected override void Up(MigrationBuilder migrationBuilder)
    {
        migrationBuilder.Sql(
            @"CREATE INDEX ""Name_TsVector"" ON ""SomeTable"" USING GIN
(((to_tsvector('russian', ""Name"") || to_tsvector('english', ""Name"")) || to_tsvector('simple', ""Name"")));");
    }

    protected override void Down(MigrationBuilder migrationBuilder)
    {
        migrationBuilder.Sql(@"DROP INDEX ""Name_TsVector"";");
    }
}
 

Есть ли какой-либо способ объединить ts_vectors с новым синтаксисом сахара индекса выражений, добавленным в Npgsql 5(документы)?

Или, может быть, есть способ создать многоязычный словарь ts_vector для синтаксических анализаторов и просто использовать его в качестве конфигурации для создания ts_vector и ts_query?

Ответ №1:

Сахар для создания индексов полнотекстового поиска-это просто сахар для общего использования. Если вам нужно что-то еще (как описано выше), вы можете очень легко использовать необработанный SQL в своих миграциях вместо этого и указать любое выражение, которое вы хотите.