我正在尝试使用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
规范化有关,但我不知道如何仍能获得预期的结果。
答案 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' );