函数ts_rank_cd(text,tsquery)不存在

Ahm*_*akr 1 postgresql full-text-search ruby-on-rails

我正在使用postgres支持的全文搜索,我安装了acts_as_tsearch插件并且它运行成功,但是当我稍后尝试它时发现了一个错误

runtimeError:ERROR C42883函数ts_rank_cd(text,tsquery)不存在HNo函数匹配给定的名称和参数类型.您可能需要添加显式类型

Gra*_*ins 5

您需要将第一个参数转换为tsvector.

因此,我们假设您正在搜索名为的列foo.text.你会想改变这个:

SELECT ts_rank_cd(foo.text, plainto_tsquery('my search terms')) FROM foo;
Run Code Online (Sandbox Code Playgroud)

对此:

SELECT ts_rank_cd(to_tsvector(foo.text), plainto_tsquery('my search terms')) FROM foo;
Run Code Online (Sandbox Code Playgroud)

或类似的东西.

如果您在@@其他地方使用运算符,通常可以重用运算符所在的表达式.

您可以to_tsvectorhttp://www.postgresql.org/docs/current/static/textsearch-controls.html#TEXTSEARCH-PARSING-DOCUMENTS找到更多文档.


Fra*_*ens 0

编辑

ts_rank_cd(文本,tsquery)不存在

这意味着没有具有此名称的函数接受文本和 tsquery 参数作为输入。没错,PostgreSQL 没有使用这些参数的函数。

手册中:

ts_rank_cd([ 权重 float4[], ] 向量 tsvector, 查询 tsquery [, 归一化整数 ])

更改函数 ts_rank_cd() 的输入,就可以了。