4

尝试使用部分搜索在 Heroku 上进行搜索

以下查询在 Heroku 上生成 SQL 错误,但在我的本地版本中可以正常工作:

@events.search(params[:search]+":*")

我正在使用 Heroku 共享数据库服务,这可能是 PostgreSQL 版本之间的语法差异吗?

我应该使用什么语法对 PostgreSQL 8 中的全文索引进行部分匹配搜索?

4

4 回答 4

3

以下是PostgreSQL 9.1 中的更改

也许您可以尝试使用字符串插值而不是串联。

@events.search("#{params[:search]}:*")

我不太确定亲吻表情符号 :* 添加到texticle的功能是什么。也许我需要学习更多的 SQL。

于 2012-02-27T00:19:53.333 回答
2

事实证明 PostgreSQL 版本 8 不支持使用 :* 语法的部分搜索。

于 2012-03-04T02:21:52.023 回答
1

正如http://www.postgresql.org/docs/9.0/interactive/textsearch-controls.html#TEXTSEARCH-PARSING-QUERIES所说,使用“:”用于指定前缀匹配。例如,如果用“Aus:”搜索“Australia”可以,但不能用“ust:*”。

所以 concat OR xxxx LIKE "%yyy%" 会更好

于 2012-05-02T07:15:17.723 回答
0

您可以使用带有前缀的 tsearch 选项:

:tsearch => {:prefix => true}
于 2017-01-11T11:06:23.873 回答