これはPGroonga 1.X用のドキュメントです。新しいPGroongaを使っているならPGroonga 2.xのドキュメントを見てください。
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はまだその機能をサポートしていません。
チュートリアルの中の例を参考にしてください。