gpt4 book ai didi

ruby-on-rails - 使用 pg_search gem 在 Heroku 上进行全文搜索

转载 作者:行者123 更新时间:2023-11-29 11:26:25 25 4
gpt4 key购买 nike

我已经使用 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

我的 Controller 代码看起来像

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 的主要开发人员。很抱歉你遇到了那个问题!现在,当使用 :prefix 搜索 PostgreSQL 8.3(Heroku 的默认设置)时,存在一个 pg_search 错误。

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。我相信他们想这样做,但他们显然不能在没有警告的情况下批量升级所有人。

关于ruby-on-rails - 使用 pg_search gem 在 Heroku 上进行全文搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7656864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com