【问题标题】:Is is worth to use fulltext search in postgres for short texts like names, username, email?是否值得在 postgres 中使用全文搜索来搜索名称、用户名、电子邮件等短文本?
【发布时间】:2019-11-28 14:46:51
【问题描述】:

我开始研究 Postgres 全文搜索功能。但是在索引诸如电子邮件地址之类的东西时,我在使用标记器时遇到了一些问题。

首先,文本搜索似乎是针对较长的文本,搜索整个单词就可以了。当我的电子邮件地址被索引为单个单词时,只能搜索前缀。但一个常见的情况是搜索company 以找到默认文本搜索索引失败的user@some-company.org

我觉得回到'user@some-company.org' ILIKE '%company%' 会是更好的选择。

问题是:是否有人对文本搜索进行了良好的配置,以查找电子邮件地址、用户名等短字段来替换 ILIKE 搜索,或者不值得付出努力,文本搜索实际上只是为了使用较长的文本?

【问题讨论】:

    标签: postgresql full-text-search


    【解决方案1】:

    对于这种情况,三元组索引更合适:

    CREATE EXTENSION pg_trgm;
    CREATE INDEX ON atable USING gin
       (email gin_trgm_ops);
    

    这将支持您的子字符串搜索。

    这对于通过相似性搜索名称也很有用,这是一个常见的要求。该索引还支持相似度算子%

    【讨论】:

      猜你喜欢
      • 2013-04-01
      • 2012-07-29
      • 1970-01-01
      • 1970-01-01
      • 2017-09-09
      • 1970-01-01
      • 2017-05-30
      • 1970-01-01
      • 2020-05-07
      相关资源
      最近更新 更多