这是我第一次在postgresql中使用全文搜索,我有一个奇怪的问题。 Rails 4(我不认为Rails是我的问题的一部分)构建如下的SQL代码:
SELECT COUNT(*) FROM "bookmarks"
WHERE (to_tsvector(title || ' ' || description)
@@ (to_tsquery('english', 'ruby')))
它的作用就像每个单词的魅力,但那些有红宝石/红宝石
等衍生物的人如果我搜索designer
,则会匹配designer
和designers
。精细。
我希望ruby
与ruby
和rubies
匹配。目前它不匹配任何东西,甚至不是ruby
。我错过了什么?
答案 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')