0

给定以下查询:

select to_tsvector('fat cat ate rat') @@ plainto_tsquery('cats ate');

此查询将返回 true 作为结果。现在,如果我不希望“猫”也匹配“猫”这个词,有什么办法可以防止这种情况发生吗?

另外,有什么方法可以确保 tsquery 以特定顺序匹配整个字符串(例如,“cats ate”被计为单个令牌而不是两个)。目前,以下查询也将匹配:

select to_tsvector('fat cat ate rat') @@ plainto_tsquery('ate cats');
4

1 回答 1

2

cat匹配cats是由于英语词干,英语可能是您的默认文本搜索配置。看看结果show default_text_search_config就可以确定了。

可以通过使用simple配置来避免。尝试使用显式文本配置的函数调用:

select to_tsvector('simple', 'fat cat ate rat') @@ plainto_tsquery('simple', 'cats ate');

或更改为:

set default_text_search_config='simple';
于 2013-04-22T20:03:57.020 回答