尝试使用部分搜索在 Heroku 上进行搜索
以下查询在 Heroku 上生成 SQL 错误,但在我的本地版本中可以正常工作:
@events.search(params[:search]+":*")
我正在使用 Heroku 共享数据库服务,这可能是 PostgreSQL 版本之间的语法差异吗?
我应该使用什么语法对 PostgreSQL 8 中的全文索引进行部分匹配搜索?
尝试使用部分搜索在 Heroku 上进行搜索
以下查询在 Heroku 上生成 SQL 错误,但在我的本地版本中可以正常工作:
@events.search(params[:search]+":*")
我正在使用 Heroku 共享数据库服务,这可能是 PostgreSQL 版本之间的语法差异吗?
我应该使用什么语法对 PostgreSQL 8 中的全文索引进行部分匹配搜索?
也许您可以尝试使用字符串插值而不是串联。
@events.search("#{params[:search]}:*")
我不太确定亲吻表情符号 :* 添加到texticle的功能是什么。也许我需要学习更多的 SQL。
事实证明 PostgreSQL 版本 8 不支持使用 :* 语法的部分搜索。
正如http://www.postgresql.org/docs/9.0/interactive/textsearch-controls.html#TEXTSEARCH-PARSING-QUERIES所说,使用“:”用于指定前缀匹配。例如,如果用“Aus:”搜索“Australia”可以,但不能用“ust:*”。
所以 concat OR xxxx LIKE "%yyy%" 会更好
您可以使用带有前缀的 tsearch 选项:
:tsearch => {:prefix => true}