我在gemfile中添加了以下内容:
gem 'texticle', "2.0", :require => 'texticle/rails' # search gem
然后我运行
bundle install
并捆绑安装gem我使用的是Rails 3.1.0,我使用的是Postgres数据库。
我验证是否在数据库表中找到了要查找的字符串:
ruby-1.9.2-p290 :004 > Hotel.first
Hotel Load (0.4ms) SELECT "hotels".* FROM "hotels" LIMIT 1
=> #<Hotel id: 1, title: "Marriot Hotel", created_at: "2012-03-01 23:53:16", updated_at: "2012-03-01 23:53:16">
当我运行“Hotel.search('e')
ruby-1.9.2-p290 :005 > Hotel.search(:title => 'e')
Hotel Load (1.4ms) SELECT "hotels".*, ts_rank(to_tsvector("hotels"."title"), to_tsquery('e')) AS "rank0.4785527956789428" FROM "hotels" WHERE (to_tsvector('english', "title") @@ to_tsquery('e')) ORDER BY "rank0.4785527956789428" DESC
=> []
我什么也得不到。我试着跑
Hotel.search('e')
但是什么也没跑。如果我尝试Hotel.search(:title => 'Marriot')
那么它可以工作,但我使用Texticle的原因是为了模糊搜索。我还缺其他配置吗?
谢谢
最佳答案
我建议检查以下几点:
验证是否已为涉及的每个数据库手动创建扩展。我没有“texticle:install_trigram”的运气。如果您使用的是Heroku,可能会有其他步骤,特别是如果您没有从共享数据库迁移。
使用模糊搜索方法。在最新版本的Texticle中,实际上有3个新方法;原来的搜索方法已经被弃用。
要手动安装扩展:
本地开发/测试
psql -U <username>
\l
\c db_development
CREATE EXTENSION pg_trgm;
\dx
\c db_test
CREATE EXTENSION pg_trgm;
\dx
\q
Heroku集成/生产
heroku pg:psql
\dx
CREATE EXTENSION pg_trgm;
\dx
更多?
PostgreSQL三角图(模糊搜索)
What's new in PostgreSQL 9.1 - PostgreSQL wiki
trigram | Tumblr
安装PostgreSQL Trigram
Install Trigram Rake Task by benhamill · Pull Request #63 · tenderlove/texticle · GitHub
texticle:install_trigram - on Heroku? · Issue #15 · tenderlove/texticle · GitHub
新的Texticle搜索方法(源代码)
texticle/lib/texticle.rb at master · texticle/texticle · GitHub
关于ruby-on-rails - Texticle模糊搜索在Ruby on Rails中找不到任何内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9762207/