PostgreSQL 上的全文搜索失败

Full text search failure on PostgreSQL

我有一个用于索引文本内容的 PostgreSQL。 使用以下代码成功创建 SearchVector 列

UPDATE public."DocumentFiles"
SET "SearchVector" = setweight(to_tsvector('pg_catalog.italian', coalesce("DocumentFileName", '')), 'A') 
   || setweight(to_tsvector('pg_catalog.italian', coalesce("DocumentFileDescription", '')), 'B') 
   || setweight(to_tsvector('pg_catalog.italian', coalesce("DocumentFileContentString", '')), 'B')
WHERE "DocumentFileID" = 123;

内容如下所示:

'011989':1A '5':7A 'cdp':2A 'contonu':10A 'elettr':6A 'grupp':8A 'impiant':5A 'manual':3A 'uso':4A

但是如果我尝试 运行 查询以获得 manual 的复数形式或单数形式(在意大利语中:manuale 是一,manuali是2个或更多)它失败了:

SELECT "DocumentFileID"
FROM public."DocumentFiles"
where "SearchVector"::tsvector @@ 'manuali'::tsquery;

return 没什么

SELECT "DocumentFileID"
FROM public."DocumentFiles"
where "SearchVector"::tsvector @@ 'manuale'::tsquery;

return 没什么

如果我准确地写在搜索向量字段中的内容,它只会 return 记录:

SELECT "DocumentFileID"
FROM public."DocumentFiles"
where "SearchVector"::tsvector @@ 'manual'::tsquery;

有什么问题吗?

问题可能是参数default_text_search_configuration没有设置为italian,所以使用了不同的词干算法。

明确并使用 to_tsquery('italian', 'manuali') 而不是 'manuali'::tsquery