我在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 &lt;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/

10-11 05:14