Вам нужно определить полнотекстовый индекс
@Index({ fulltext: true })
и использовать построитель запросов для написания собственного пользовательского запроса
пользовательского запроса и использовать специальный синтаксис sql.
Сущность:
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Index({ fulltext: true })
@Column("varchar")
name: string;
@Index({ fulltext: true })
@Column("varchar")
lastname: string;
@Index({ fulltext: true })
@Column("text")
personalDescription: string;
}
Выберите с помощью построителя запросов:
const searchTerm = "programmer";
const result = await connection.manager.getRepository(User)
.createQueryBuilder()
.select()
.where('MATCH(lastname) AGAINST ('${searchTerm}' IN BOOLEAN MODE)')
.orWhere('MATCH(name) AGAINST ('${searchTerm}' IN BOOLEAN MODE)')
.orWhere('MATCH(personalDescription) AGAINST ('${searchTerm}' IN BOOLEAN MODE)')
.getMany();