簡體   English   中英

使用pg_search gem在Heroku上進行全文搜索

[英]Full-text search on Heroku using pg_search gem

我已經使用pg_search gem為我的Rails應用程序實現了全文搜索

我創建索引的遷移看起來像

execute(<<-'eosql'.strip)
  CREATE index mytable_fts_idx
  ON mytable
  USING gin(
    (setweight(to_tsvector('english', coalesce("mytable"."name", '')), 'A') ||
    ' ' ||
    setweight(to_tsvector('english', coalesce("mytable"."description",'')), 'B')
    )
  )
eosql

我的控制器代碼看起來像

pg_search_scope :full_text_search,
:against => [
  :name, :description],
:using => {
  :tsearch => {
    :prefix => true,
    :dictionary => "english",
    :any_word => true
  }
}

在Postgres 9.0.4上本地完全正常。 但是,當我將其部署到heroku並搜索示例查詢'test'時,它會引發錯誤

PGError: ERROR:  syntax error in tsquery: "' test ':*"

SELECT COUNT(count_column) FROM (SELECT  1 AS count_column FROM "mytable"  WHERE (((to_tsvector('english', coalesce("mytable"."name", '')) || to_tsvector('english', coalesce("mytable"."description", ''))) @@ (to_tsquery('english', ''' ' || 'test' || ' ''' || ':*')))) LIMIT 12 OFFSET 0) subquery_for_count ):

有關我錯在哪里的建議以及我應該注意什么來解決這個錯誤? 謝謝。

我是pg_search的主要開發者。 對不起,你遇到了這個問題! 現在使用時會出現pg_search錯誤:prefix對PostgreSQL 8.3(Heroku的默認值)進行:prefix搜索。

https://github.com/Casecommons/pg_search/issues/10

這是我現在的首要任務。 我仍在找出讓測試套件針對8.x和9.x運行的最佳方法。

更新 :遺憾的是:prefix搜索根本不適用於PostgreSQL 8.3。 該功能在8.4中引入。 我發布了pg_search 0.3.3,它改進了錯誤信息。 希望Heroku很快就會升級到9.0。 我相信他們想要這樣做,但他們顯然不能在沒有警告的情況下升級所有批發商。

暫無
暫無

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

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