簡體   English   中英

Texticle模糊搜索在Ruby on Rails中找不到任何東西

[英]Texticle fuzzy search not finding anything in Ruby on Rails

我已將以下內容添加到我的gemfile中:

gem 'texticle', "2.0", :require => 'texticle/rails' # search gem

然后我運行了bundle install和bundle安裝了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的原因是模糊搜索。

我錯過了其他任何配置嗎?

謝謝

我建議檢查一些事情:

  1. 驗證是否已為所涉及的每個數據庫手動創建擴展。 我沒有運氣'texticle:install_trigram'。 如果您使用的是Heroku,則可能還有其他步驟,尤其是在您尚未從共享數據庫遷移的情況下。

  2. 使用fuzzy_search方法。 在最新版本的Texticle中,實際上有3種新方法; 原來的#search方法已被棄用。

要手動安裝擴展程序:

本地開發/測試
 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 Trigrams(模糊搜索)

安裝PostgreSQL Trigram

新的Texticle搜索方法(源代碼)

我對Texticle工作方式的理解是,它會對你的字符串列進行全文搜索,但默認情況下不一定要進行模糊搜索。 如果你查看它在Postgres中生成的查詢,它正在尋找'e'上的匹配,而不是任何包含字母'e'的單詞。

你可以在這里閱讀Postgres文檔:

http://www.postgresql.org/docs/9.1/static/datatype-textsearch.html

也就是說,我看到支持前綴匹配但不支持文檔中的后綴,雖然我可能會遺漏一些東西。

如果你做Hotel.search('Marr:*')會怎么樣?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM