当查询具有派生词时,postgresql全文搜索没有找到任何内容

时间:2013-06-15 15:47:50

标签: postgresql full-text-search ruby-on-rails-4

这是我第一次在postgresql中使用全文搜索,我有一个奇怪的问题。 Rails 4(我不认为Rails是我的问题的一部分)构建如下的SQL代码:

SELECT COUNT(*) FROM "bookmarks"
WHERE (to_tsvector(title || ' ' || description)
@@ (to_tsquery('english', 'ruby')))

它的作用就像每个单词的魅力,但那些有红宝石/红宝石

等衍生物的人

如果我搜索designer,则会匹配designerdesigners。精细。
我希望rubyrubyrubies匹配。目前它不匹配任何东西,甚至不是ruby。我错过了什么?

1 个答案:

答案 0 :(得分:2)

如果您需要将english指定为to_tsquery的文字配置,则还需要为to_tsvector指定一致,以获得一致的结果。

尝试

SELECT COUNT(*) FROM "bookmarks"
WHERE (to_tsvector('english', title || ' ' || description)
@@ (to_tsquery('english', 'ruby')))

english是默认文字搜索配置时,to_tsvector('ruby')会扩展为'rubi':1 <{1}}

但是如果将文本搜索配置设置为其他内容,则它将以不同方式展开,并且不匹配。

示例:

to_tsquery('english', 'ruby')