postgresql tsvector 部分文本匹配

postgresql tsvector partial text match

我正在尝试创建一个 PostgreSQL 查询来查找 tsvector 列中的部分文本。

我有一个像这样的 tsvector 值 "'89' 'TT7' 'test123'",我需要找到任何包含“%es%”的行。

我该怎么做?

我试过了

select * from use_docs_conteudo
WHERE textodados @@ to_tsquery('es')

您似乎想使用快速 ILIKE 查询进行匹配。 pg_trgm will be the right tool to go with. You can use POSIX regex rules 用于定义您的查询。

WITH data(t) AS ( VALUES
  ('test123! TT7 89'::TEXT),
  ('test123, TT7 89'::TEXT),
  ('test@test123.domain TT7 89'::TEXT)
)
SELECT count(*) FROM data WHERE t ~* 'es' AND t ~* '\mtest123\M';

结果:

 count 
-------
     3
(1 row)

现有答案的链接:

  • Postgresql full text search part of words
  • PostgreSQL: Full Text Search - How to search partial words?