使用mysql和typeorm从列中搜索值

mlnl4t2r  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(436)

如何在mysql中使用typeorm的最新版本进行全文查询?
我想搜索所有有确定词或短语的人。例如,在表中“people”有:

@Column("varchar")
name: string;

@Column("varchar")
lastname: string;

@Column("text")
personalDescription: string;

所以如果我输入“andrés、niko、i am developer等等,我想通过mysql的功能“full-text”在用户名、姓氏和personaldescription中找到谁拥有这些信息。
谢谢。

yptwkmov

yptwkmov1#

我对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;
}

使用查询生成器选择:

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();

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

相关问题