使用西班牙语词典 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 并在之后重建任何索引,并妥善记录它以便在升级时不会丢失您的更改。 (或者创建一个西班牙配置的分支,以避免升级问题)
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 并在之后重建任何索引,并妥善记录它以便在升级时不会丢失您的更改。 (或者创建一个西班牙配置的分支,以避免升级问题)