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

前端之家收集整理的这篇文章主要介绍了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之后而不是之前执行.

原文链接:https://www.f2er.com/postgresql/191960.html

猜你在找的Postgre SQL相关文章