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
.
我正在使用 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
.