postgresql – 匹配以前缀结尾的短语和全文搜索

我正在寻找一种方法来使用Postgresql中的tsvector模拟SELECT * FROM table WHERE attr LIKE’%text%’之类的东西.

我没有使用字典就创建了一个tsvector属性.现在,像…这样的查询

SELECT title
FROM table
WHERE title_tsv @@ plainto_tsquery('ph:*');

…将返回所有标题,如’Physics’,’PHP’等.但是,如何创建一个返回所有标题查询,其中标题以’Zend Fram’开头(应该返回例如’Zend Framework’)?

当然,我可以使用类似的东西:

SELECT title
FROM table
WHERE title_tsv @@ to_tsquery('zend')
AND   title_tsv @@ to_tsquery('fram:*');

然而,这似乎有点尴尬.

所以,问题是:有没有办法用以下方法制定上面给出的查询

SELECT title
FROM table
WHERE title_tsv @@ to_tsquery('zend fram:*');
SELECT title
FROM table
WHERE title_tsv @@ to_tsquery('zend') and
title_tsv @@ to_tsquery('fram:*')

相当于:

SELECT title
FROM table
WHERE title_tsv @@ to_tsquery('zend & fram:*')

但当然发现“Zend也没有框架”.

当然,你可以在tsquery匹配后表达与标题的正则表达式匹配,但你必须使用explain analyze来确保在tsquery之后而不是之前执行.

相关文章

项目需要,有个数据需要导入,拿到手一开始以为是mysql,结果...
本文小编为大家详细介绍“怎么查看PostgreSQL数据库中所有表...
错误现象问题原因这是在远程连接时pg_hba.conf文件没有配置正...
因本地资源有限,在公共测试环境搭建了PGsql环境,从数据库本...
wamp 环境 这个提示就是说你的版本低于10了。 先打印ph...
psycopg2.OperationalError: SSL SYSCALL error: EOF detect...