使用 posgresql to_tsquery列的前缀匹配,可能具有多个值

Using posgresql to_tsquery prefix match on column with possible multiple values

提问人:Mosd 提问时间:9/11/2023 更新时间:9/12/2023 访问量:26

问:

如果只查询一个单词,这很好用:

select to_tsvector('english', 'matchsticks only applicable things'), to_tsquery('english', 'match:*'),
to_tsvector('english', 'matchsticks only applicable things') @@ to_tsquery('english', 'match:*')

现在我怎样才能让它与像db_column这样的列一起工作,这些列可以有带空格的字符串:

select to_tsvector('english', 'matchsticks only applicable things'), to_tsquery('english', db_column),
to_tsvector('english', 'matchsticks only applicable things') @@ to_tsquery('english', db_column)

示例 if 和 i want to pass ?尝试plainto_tsquery,但缺少允许前缀匹配的“:*”db_column = "match test square""match:*&test:*&square:*"

PostgreSQL 全文搜索 匹配

评论


答:

1赞 JGH 9/12/2023 #1

您可以操作 tsquery 字符串:

select  (replace(
          plainto_tsquery('english', 'match test square')::text,
          ' &',
          ':*&') || ':*'
         )::tsquery;


             tsquery
----------------------------------
 'match':* & 'test':* & 'squar':*
(1 row)