[Groonga-mysql-commit] mroonga/mroonga [master] added docs for _score column.

Back to archive index

null+****@clear***** null+****@clear*****
2010年 11月 16日 (火) 18:12:30 JST


Tetsuro IKEDA	2010-11-16 09:12:30 +0000 (Tue, 16 Nov 2010)

  New Revision: 9e60193fdfa61f8b5b3dacc2ce7f6c30ac67a162

  Log:
    added docs for _score column.

  Modified files:
    doc/ja/source/userguide.rst

  Modified: doc/ja/source/userguide.rst (+46 -1)
===================================================================
--- doc/ja/source/userguide.rst    2010-11-16 06:35:21 +0000 (aa7f23b)
+++ doc/ja/source/userguide.rst    2010-11-16 09:12:30 +0000 (6b06771)
@@ -42,7 +42,11 @@ SHOW ENGINESコマンドでgroongaストレージエンジンがインストー
 
 インストールが確認できたら、テーブルを1つ作成してみましょう。 ::
 
- mysql> CREATE TABLE t1 (c1 INT PRIMARY KEY, c2 VARCHAR(255), FULLTEXT INDEX (c2)) ENGINE = groonga DEFAULT CHARSET utf8;
+ mysql> CREATE TABLE t1 (
+      >   c1 INT PRIMARY KEY,
+      >   c2 VARCHAR(255), 
+      >   FULLTEXT INDEX (c2)
+      > ) ENGINE = groonga DEFAULT CHARSET utf8;
  Query OK, 0 rows affected (0.22 sec)
 
 INSERTでデータを投入してみましょう。 ::
@@ -66,6 +70,47 @@ INSERTでデータを投入してみましょう。 ::
 おぉぉー。検索できましたね。
 
 
+検索スコアの取得方法
+----------------------------
+
+全文検索を行う際、指定したキーワードにより内容が一致するレコードを上位に表示したいというような場合があります。そうしたケースでは検索スコアを利用します。
+
+検索スコアを取得するためには、テーブル定義時に ``_score`` という名前のカラムを作成しておく必要があります。 ::
+
+
+ mysql> CREATE TABLE t1 (
+      >   c1 INT PRIMARY KEY,
+      >   c2 TEXT,
+      >   _score FLOAT,
+      >   FULLTEXT INDEX (c2)
+      > ) ENGINE = groonga DEFAULT CHARSET utf8;
+ Query OK, 0 rows affected (0.22 sec)
+
+_scoreカラムのデータ型はFLOATまたはDOUBLEである必要があります。
+
+
+INSERTでデータを投入してみましょう。_scoreカラムは仮想カラムとして実装されており、更新は行えません。更新対象から外すか、値に ``null`` を使用する必要があります。 ::
+
+ mysql> insert into t1 values(1, "aa ii uu ee oo", null);
+ Query OK, 1 row affected (0.00 sec)
+ 
+ mysql> insert into t1 values(2, "aa ii ii ii oo", null);
+ Query OK, 1 row affected (0.00 sec)
+ 
+ mysql> insert into t1 values(3, "dummy", null);
+ Query OK, 1 row affected (0.00 sec)
+
+全文検索(MATCH...AGAINSTによる検索)を実行した場合、_scoreカラムを通じて検索スコアを取得できます。_scoreカラムをORDER BYに指定することで結果のソートも行うことができます。 ::
+
+ mysql> select * from t1 where match(c2) against("ii") order by _score desc;
+ +----+----------------+--------+
+ | c1 | c2             | _score |
+ +----+----------------+--------+
+ |  2 | aa ii ii ii oo |      3 |
+ |  1 | aa ii uu ee oo |      1 |
+ +----+----------------+--------+
+ 2 rows in set (0.00 sec)
+
 ログ出力
 ----------------------------
 




Groonga-mysql-commit メーリングリストの案内
Back to archive index