gpt4 book ai didi

postgresql - 将以前缀开头的短语与全文搜索相匹配

转载 作者:行者123 更新时间:2023-11-29 11:16:53 32 4
gpt4 key购买 nike

我正在寻找一种在 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 匹配之后表达与 title 的正则表达式匹配,但是您必须使用 explain analyze 来确保它是在 tsquery 之后而不是之前执行的。

关于postgresql - 将以前缀开头的短语与全文搜索相匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6155592/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com