使用 MySQL 和 TypeORM 从列中搜索值

And*_*oya 0 javascript mysql node.js typeorm

如何使用最新版本的 TypeORM 在 MySQL 中进行全文查询?

我想搜索所有具有确定单词或短语的人。例如,在表“人”中有:

@Column("varchar")
name: string;

@Column("varchar")
lastname: string;

@Column("text")
personalDescription: string;
Run Code Online (Sandbox Code Playgroud)

因此,如果我输入“Andrés”、“Niko”、“我是开发人员”或其他任何内容,我想通过 MySQL 的“全文”功能在用户的姓名、姓氏和个人描述中找到谁拥有该信息。

谢谢。

小智 5

我对mysql全文没有太多经验。但是我的简单测试正在运行。

实体:

@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;
}
Run Code Online (Sandbox Code Playgroud)

使用查询生成器选择:

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();
Run Code Online (Sandbox Code Playgroud)

如果您需要更高级的全文搜索,您必须查看 mysql 文档。