我刚刚从 MySQL 迁移到 Postgres 9.0.3。我有一个全新的应用程序,其中包含一些数据(游戏数据)。
无论如何,我似乎无法搜索到部分单词。这是我的搜索方法:
def self.search(query)
conditions = <<-EOS
to_tsvector('english', title) @@ plainto_tsquery('english', ?)
EOS
find(:all, :conditions => [conditions, query])
end
我确定我需要一个通配符,但我只是在学习 Postgres。当我搜索
Shinobi
时,我得到了正确的结果:但是当我搜索
Shin
时我什么也没得到?感谢您提供任何线索。
最佳答案
我认为要允许前缀匹配,您需要使用 to_tsquery 而不是 plainto_tsquery
那是说 http://www.postgresql.org/docs/current/static/textsearch-controls.html#TEXTSEARCH-PARSING-QUERIES
所以你的代码可能是这样的
def self.search(query)
conditions = <<-EOS
to_tsvector('english', title) @@ to_tsquery('english', ?)
EOS
find(:all, :conditions => [conditions, query + ':*'])
end
关于ruby-on-rails-3 - Postgres 全文与 Rails 3 中的部分单词不匹配?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5086325/