2010-08-17 41 views
0

,我安裝acts_as_tsearch插件和它的作品成功,但是當我後來試了一下,我發現一個錯誤ts_rank_cd(文字,tsquery)不存在

runtimeError: ERROR C42883 Mfunction ts_rank_cd(text, tsquery) does not exist HNo function matches the given name and argument types. You might need to add explicit type

回答

0

編輯

ts_rank_cd(text, tsquery) does not exist

這意味着沒有函數與此名稱接受文本和tsquery參數作爲輸入。這是正確的,PostgreSQL沒有使用這些參數的函數。

the manual

ts_rank_cd([ weights float4[], ] vector tsvector, query tsquery [, normalization integer ])

更改的功能ts_rank_cd()輸入,你將被罰款。

4

您需要將您的第一個參數轉換爲tsvector。

因此,讓我們假設您正在搜索名爲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