Postgres全文搜索未返回预期结果

时间:2020-01-24 02:18:40

标签: postgresql full-text-search

我正在尝试使用Postgres进行全文搜索,但结果却出乎意料。

SELECT to_tsvector('english', 'ross, john and carrie' ) @@ to_tsquery( 'ross' );是的,我期望的是

SELECT to_tsvector('english', 'ross, john and carrie' ) @@ to_tsquery( 'ross & john' );还是真实的和预期的。

SELECT to_tsvector('english', 'ross, john and carrie' ) @@ to_tsquery( 'ross & carrie' ); 假?

如果我查看tsvector的结果,Carrie会变成Carri

'carri':4 'john':2 'ross':1

我假设这与english规范化有关,但我不知道如何仍能获得预期的结果。

2 个答案:

答案 0 :(得分:2)

to_tsvector() and to_tsquery()都支持text search configuration的附加参数。两者都使用相同的内容:

SELECT to_tsvector('english', 'ross, john and carrie')
    @@ to_tsquery ('english', 'ross & carrie' );

如果省略该参数,则默认为默认设置。我敢打赌,您的默认文本搜索配置为 not 'english'。检查:

SHOW default_text_search_config;

答案 1 :(得分:0)

解决方案非常简单。

请确保在您的ts_query中使用相同的语言。

SELECT to_tsvector('english', 'ross, john and carrie' ) @@ to_tsquery('english', 'ross & carrie' );