如何解决Postgres 全文搜索不适用于某些术语
我正在使用 Postgres FTS 来实现搜索。这是我的示例 tsvector
:
{'analyst':2A 'busi':1A}
我使用的查询是
SELECT * FROM table_name WHERE tsv @@ to_tsquery('english','b:*')
结果显示正确,但如果我使用 'a:*'
而不是 'b:*'
,
SELECT * FROM table_name WHERE tsv @@ to_tsquery('english','a:*')
结果是一个空集。
这是 PostgreSQL serach 中的一些错误吗?我使用的是 PostgreSQL 12.6 版。
解决方法
'a:' 不是有效的英语词素:
SELECT to_tsquery('english','a:')
注意:文本搜索查询仅包含停用词或不包含 词素,忽略
,'a' 是一个停用词,即使它已经用 ':*' 修饰,to_tsquery 也会将其删除。我不知道这样做的原理是什么,这对我来说不是很直观。
所以你必须避免使用 to_tsquery。您可以改为执行 'a:*'::tsquery
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。