これはPGroonga 1.X用のドキュメントです。新しいPGroongaを使っているならPGroonga 2.xのドキュメントを見てください。
これらはPGroonga 4.0.0で削除されました。PGroonga 4.0.0以降では利用できません。
pgroonga.score関数pgroonga.score関数はマッチした度合いを数値で返します。もし、検索したクエリーに対してそのレコードがマッチしているほどそのレコードのスコアーは高い数値になります。
pgroonga.score関数を使うとマッチした度合いを数値で取得することができます。検索したクエリーに対してよりマッチしているレコードほど高い数値になります。
double precision pgroonga.score(record)
recordはテーブル名です。
次のスキーマが定義されているとします。
CREATE TABLE score_memos (
id integer PRIMARY KEY,
content text
);
CREATE INDEX pgroonga_score_memos_content_index
ON score_memos
USING pgroonga (id, content);
recordはscore_memosにします。
SELECT *, pgroonga.score(tableoid, ctid)
FROM score_memos
WHERE content %% 'PGroonga';
pgroonga_score関数はdouble precision型の値でマッチした度合いを返します。
pgroonga.score関数を使うには、pgroongaインデックスにプライマリーキーに指定したカラムを追加する必要があります。もし、プライマリーキーに指定したカラムをpgroongaインデックスに追加していない場合は、pgroonga.score関数は常に0.0を返します。
pgroonga.score関数はインデックスを使わずに全文検索した場合は常に0.0を返します。言い換えると、pgroonga.score関数はシーケンシャルスキャンで全文検索を実行した場合は常に0.0を返します。
もし、pgroonga.score関数が意図せずに0.0を返しているときは、次のことを確認してください。
現在のところ、スコアーの値は「何個キーワードが含まれていたか」(TF、Term Frequency)です。Groongaはどのようにスコアーを計算するかをカスタマイズすることができます。しかし、PGroongaはまだその機能をサポートしていません。
チュートリアルの中の例を参考にしてください。