Prisma.io + 全文搜索 + PostgreSQL:搜索仅适用于完全匹配

问题描述 投票:0回答:2

我已经启用 prisma 全文搜索,我想搜索

email
字段返回所有匹配的条目。

我得到以下代码:

const data = await this.prismaService.merchant.findMany({
  where: {
    email: {
      search: '[email protected]',
    },
  },
});

当我输入确切的电子邮件地址时,这是有效的。但是,当我尝试搜索它的一部分时,即

12rwqg13tr222vqfgedvqrw22@someprovider
,我没有得到任何结果。

我是否必须创建索引才能完成此操作?在文档中提到,如果我想加快查询速度,我只需要 PostgreSQL 的索引。我在这里错过了什么吗?

postgresql full-text-search prisma
2个回答
9
投票

显然我看错了特征。

contains
是我要找的东西:

const res = await prisma.post.findMany({
  where: {
    author: {
      email: {
        contains: 'prisma.io',
      },
    },
  },
})

编辑:如果您需要不区分大小写的搜索,请查看区分大小写的 prisma 文档

const res = await prisma.post.findMany({
  where: {
    author: {
      email: {
        contains: 'prisma.io',
        mode: 'insensitive',
      },
    },
  },
})

这也匹配

Prisma.IO


0
投票

请记住,包含不同于全文搜索方法。

© www.soinside.com 2019 - 2024. All rights reserved.