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?
我正在尝试创建一个 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?