使用西班牙语词典 to_tsquery 的 PostgreSQL 全文搜索在某些词中不起作用

PostgreSQL full text search using spanish dictionary to_tsquery does not work in some words

SELECT * FROM ts_debug('spanish', 'sentidos');

这个词 returns 没有词位,这意味着我什至无法搜索那个确切的词,没有匹配项。

SELECT to_tsvector('spanish', 'Esto no tiene sentido ni sentidos') @@ 
to_tsquery('spanish', 'sentidos');

returns false, 彻底坏掉了

换句话说行

SELECT to_tsvector('spanish', 'Esto no tiene pedido ni pedidos') @@
 to_tsquery('spanish', 'pedidos');

returns 真

我该如何解决这个问题?

'sentidos' 是西班牙语中的停用词。您会在 $SHAREDIR/tsearch_data/spanish.stop 中找到它。这就是它被删除的原因。西班牙语似乎确实有很多停用词(是英语的 2.5 倍),但就我所知这是合理的。如果您不同意,您可以编辑该文件以删除您想要保留的单词,注意重新计算任何存储的 tsvectors 并在之后重建任何索引,并妥善记录它以便在升级时不会丢失您的更改。 (或者创建一个西班牙配置的分支,以避免升级问题)