функция ts_rank_cd (text, tsquery) не существует - PullRequest
1 голос
/ 17 августа 2010

Я использую полнотекстовый поиск, поддерживаемый postgres, я установил плагин acts_as_tsearch, и он успешно работает, но когда я попробовал его позже, я обнаружил ошибку

runtimeError: ОШИБКА C42883 Mfunction ts_rank_cd (text, tsquery) делает несуществующая функция HNo соответствует заданному имени и типу аргумента. Вы может потребоваться добавить явный тип

Ответы [ 2 ]

5 голосов
/ 24 ноября 2010

Вам нужно привести свой первый параметр в цвет.

Итак, давайте предположим, что вы ищете столбец с именем foo.text. Вы захотите изменить это:

SELECT ts_rank_cd(foo.text, plainto_tsquery('my search terms')) FROM foo;

к этому:

SELECT ts_rank_cd(to_tsvector(foo.text), plainto_tsquery('my search terms')) FROM foo;

или что-то подобное.

Если вы используете оператор @@ в другом месте, вы обычно можете повторно использовать выражения, над которыми работает оператор.

Дополнительную документацию можно найти по to_tsvector на http://www.postgresql.org/docs/current/static/textsearch-controls.html#TEXTSEARCH-PARSING-DOCUMENTS

0 голосов
/ 17 августа 2010

EDIT

ts_rank_cd (текст, tsquery) не есть

Это означает, что нет функции с таким именем, которая принимает текст и параметр tsquery в качестве входных данных. И это правильно, PostgreSQL не имеет функции, использующей эти параметры.

С инструкция :

ts_rank_cd ([weights float4 [],] векторный цвет, запрос tsquery [, нормализация целое число))

Измените ввод для функции ts_rank_cd (), и все будет в порядке.

...