postgresql tsvector部分文本匹配

时间:2016-07-06 20:45:54

标签: postgresql match partial tsvector

我尝试创建PostgreSQL查询以在tsvector列中查找部分文本。

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

我该怎么做?

我试过

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

1 个答案:

答案 0 :(得分:1)

您似乎希望使用快速ILIKE查询进行野外匹配。 pg_trgm将成为合适的工具。您可以使用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)

现有答案的链接: