Postgres 全文搜索不适用于某些术语

Postgres full text search not working for some terms

我正在使用 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 搜索中的错误吗?我正在使用 PostgreSQL 版本 12.6。

'a:' 不是有效的英语词素:

SELECT to_tsquery('english', 'a:')

NOTICE: text-search query contains only stop words or doesn't contain lexemes, ignored

'a' 是停用词,to_tsquery 将其删除,即使它已经用 ':*' 修饰。我不知道这样做的理由是什么,这对我来说不是很直观。

因此您必须避免使用 to_tsquery。你可以改为 'a:*'::tsquery.