groonga - MySQLで高速に全文検索するためのオープンソースのストレージエンジン

4. リファレンス

4.1. 利用可能なSQLコマンドの一覧

  • ALTER TABLE table_name ADD COLUMN column_name TEXT
  • ALTER TABLE table_name ADD FULLTEXT INDEX index_name (column_name)
  • ALTER TABLE table_name ADD SPATIAL KEY index_name (geometry_column_name)
  • ALTER TABLE table_name ENGINE = groonga
  • ALTER TABLE table_name RENAME new_table_name
  • COMMIT
  • CREATE FULLTEXT INDEX index_name ON table_name(column_name)
  • CREATE FULLTEXT INDEX index_name ON table_name(column_name, ...)
  • CREATE TABLE \`table-name-with-hyphen\` (...)
  • CREATE TABLE table_name (... FULLTEXT INDEX index_name (column_name) COMMENT 'parser "TokenMecab"')
  • CREATE TABLE table_name (... FULLTEXT INDEX index_name (column_name))
  • CREATE TABLE table_name (... FULLTEXT INDEX index_name (column_name, ...))
  • CREATE TABLE table_name (... INDEX (column_name))
  • CREATE TABLE table_name (... INDEX (column_name, ...))
  • CREATE TABLE table_name (... INDEX USING BTREE (column_name))
  • CREATE TABLE table_name (... PRIMARY KEY (column_name))
  • CREATE TABLE table_name (...) CAHRSET UTF8
  • CREATE TABLE table_name (...) ENGINE=groonga COMMENT = 'ENGINE "InnoDB"'
  • CREATE TABLE table_name (...) ENGINE=groonga
  • CREATE TABLE table_name (\`_id\` INT)
  • CREATE TABLE table_name (\`_id\` INT, KEY(_id) USING HASH)
  • CREATE TABLE table_name (column_name BIGINT)
  • CREATE TABLE table_name (column_name BINARY(...))
  • CREATE TABLE table_name (column_name BIT)
  • CREATE TABLE table_name (column_name BLOB)
  • CREATE TABLE table_name (column_name CHAR(...))
  • CREATE TABLE table_name (column_name DATE)
  • CREATE TABLE table_name (column_name DATETIME)
  • CREATE TABLE table_name (column_name DECIMAL)
  • CREATE TABLE table_name (column_name DOUBLE)
  • CREATE TABLE table_name (column_name ENUM(...))
  • CREATE TABLE table_name (column_name FLOAT)
  • CREATE TABLE table_name (column_name GEOMETRY NOT NULL)
  • CREATE TABLE table_name (column_name INT PRIMARY KEY AUTO_INCREMENT)
  • CREATE TABLE table_name (column_name INT UNSIGNED)
  • CREATE TABLE table_name (column_name INT)
  • CREATE TABLE table_name (column_name LONGBLOB)
  • CREATE TABLE table_name (column_name LONGTEXT)
  • CREATE TABLE table_name (column_name MEDIUMBLOB)
  • CREATE TABLE table_name (column_name MEDIUMINT)
  • CREATE TABLE table_name (column_name MEDIUMTEXT)
  • CREATE TABLE table_name (column_name SET(...))
  • CREATE TABLE table_name (column_name SMALLINT)
  • CREATE TABLE table_name (column_name TEXT)
  • CREATE TABLE table_name (column_name TIME)
  • CREATE TABLE table_name (column_name TIMESTAMP)
  • CREATE TABLE table_name (column_name TINYBLOB)
  • CREATE TABLE table_name (column_name TINYINT)
  • CREATE TABLE table_name (column_name TINYTEXT)
  • CREATE TABLE table_name (column_name VARBINARY(...))
  • CREATE TABLE table_name (column_name VARCHAR(...))
  • CREATE TABLE table_name (column_name YEAR)
  • DELETE FROM table_name WHERE ...
  • DROP INDEX column_name ON table_name
  • DROP TABLE IF EXISTS table_name, ...
  • DROP TABLE \`table-name-with-hyphen\`, ...
  • DROP TABLE table_name, ...
  • FLUSH LOGS
  • FLUSH TABLES
  • INSERT INTO (geometry_column_name) VALUES (GeomFromText('POINT(...)'))
  • INSERT INTO ... VALUES ...
  • INSERT INTO table_name (column_name, ...) SELECT ... FROM other_table_name
  • REPLACE INTO table_name SELECT ... FROM other_table_name ...
  • SELECT * FROM information_schema.plugins WHERE plugin_name = "groonga"
  • SELECT * FROM table_name FORCE INDEX(index_name) WHERE ...
  • SELECT * FROM table_name ORDER BY column_name ASC LIMIT ...
  • SELECT * FROM table_name ORDER BY column_name ASC
  • SELECT * FROM table_name ORDER BY column_name DESC LIMIT ...
  • SELECT * FROM table_name ORDER BY column_name DESC
  • SELECT * FROM table_name ORDER BY column_name
  • SELECT * FROM table_name WHERE MATCH(column_name) AGAINST("*D+ word ..." IN BOOLEAN MODE)
  • SELECT * FROM table_name WHERE MATCH(column_name) AGAINST("*D- word ..." IN BOOLEAN MODE)
  • SELECT * FROM table_name WHERE MATCH(column_name) AGAINST("*DOR word ..." IN BOOLEAN MODE)
  • SELECT * FROM table_name WHERE MATCH(column_name) AGAINST("+word ..." IN BOOLEAN MODE)
  • SELECT * FROM table_name WHERE MATCH(column_name) AGAINST("..." IN BOOLEAN MODE)
  • SELECT * FROM table_name WHERE MATCH(column_name, ...) AGAINST("..." IN BOOLEAN MODE)
  • SELECT * FROM table_name WHERE MBRContains(GeomFromText('LineString(...)'), geometry_column_name)
  • SELECT * FROM table_name WHERE NOT MATCH(column_name) AGAINST("..." IN BOOLEAN MODE)
  • SELECT * FROM table_name WHERE column_name < ...
  • SELECT * FROM table_name WHERE column_name <= ...
  • SELECT * FROM table_name WHERE column_name = ...
  • SELECT * FROM table_name WHERE column_name > ...
  • SELECT * FROM table_name WHERE column_name >= ...
  • SELECT * FROM table_name WHERE column_name BETWEEN ... AND ...
  • SELECT * FROM table_name
  • SELECT *, MATCH(column_name) AGAINST("..." IN BOOLEAN MODE) FROM table_name WHERE MATCH(column_name) AGAINST("..." IN BOOLEAN MODE)
  • SELECT FOUND_ROWS()
  • SELECT SQL_CALC_FOUND_ROWS * FROM table_name WHERE MATCH(...) AGAINST("..." IN BOOLEAN MODE) ORDER BY column_name LIMIT start,n_records
  • SELECT last_insert_grn_id()
  • SET binlog_format="MIXED"
  • SET binlog_format="ROW"
  • SET binlog_format="STATEMENT"
  • TRUNCATE TABLE table_name
  • UPDATE table_name SET column_name = ...

4.2. 利用できないSQLコマンドの一覧

  • CREATE TABLE (...) CAHRSET not_utf8
  • INSERT INTO (geometry_column_name) VALUES (GeomFromText('LineString(...)'))
  • INSERT INTO (...) VALUES (null)
  • START TRANSACTION

4.3. リストにないSQLコマンドを見つけました

もし、あなたがリストにないSQLコマンドを見つけて、そのSQLコマンドが動くかどうかを確認した場合は、そのSQLコマンドをこのリストに追加させてください。そのSQLコマンドを 開発チーム に連絡してもらうか、 ソースファイル に対するパッチをGitHubでpull requestしてくれれば取り込みます!

4.4. サーバ変数の一覧

独自に追加されたサーバ変数を説明します。

4.4.1. groonga_default_parser

デフォルトの全文検索用パーサ。デフォルト値はconfigureの with-default-parser オプションで指定できます(無指定時は TokenBigram )。

全文検索パーサーとして TokenBigramSplitSymbolAlphaDigit を使う例です。この例では body_index 全文検索インデックスは TokenBigramSplitSymbolAlphaDigit を使います。

1
2
3
4
5
6
SET GLOBAL groonga_default_parser=TokenBigramSplitSymbolAlphaDigit;
CREATE TABLE diaries (
  id INT PRIMARY KEY AUTO_INCREMENT,
  body TEXT,
  FULLTEXT INDEX body_index (body)
) DEFAULT CHARSET UTF8;

4.4.2. groonga_libgroonga_version

groongaライブラリのバージョン

groongaライブラリのバージョンを確認するためのSQL例です:

mysql> SHOW VARIABLES LIKE 'groonga_libgroonga_version';
+----------------------------+------------------+
| Variable_name              | Value            |
+----------------------------+------------------+
| groonga_libgroonga_version | 1.2.8-9-gbf05b82 |
+----------------------------+------------------+
1 row in set (0.00 sec)

4.4.3. groonga_log_file

mroongaのログファイル名。デフォルト値は groonga.log

ログファイルを /tmp/mroonga.log に変更する例です:

mysql> SHOW VARIABLES LIKE 'groonga_log_file';
+------------------+-------------+
| Variable_name    | Value       |
+------------------+-------------+
| groonga_log_file | groonga.log |
+------------------+-------------+
1 row in set (0.00 sec)

mysql> SET GLOBAL groonga_log_file = "/tmp/mroonga.log";
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW VARIABLES LIKE 'groonga_log_file';
+------------------+------------------+
| Variable_name    | Value            |
+------------------+------------------+
| groonga_log_file | /tmp/mroonga.log |
+------------------+------------------+
1 row in set (0.00 sec)

4.4.4. groonga_log_level

mroongaのログの出力レベル。デフォルト値は NOTICE

ログレベルを DEBUG に変更する例です。 DEBUG レベルにするとデバッグ用のたくさんのメッセージがログに出力されます:

mysql> SHOW VARIABLES LIKE 'groonga_log_level';
+-------------------+--------+
| Variable_name     | Value  |
+-------------------+--------+
| groonga_log_level | NOTICE |
+-------------------+--------+
1 row in set (0.00 sec)

mysql> SET GLOBAL groonga_log_level = "debug";
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW VARIABLES LIKE 'groonga_log_level';
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| groonga_log_level | DEBUG |
+-------------------+-------+
1 row in set (0.00 sec)

4.4.5. groonga_version

mroongaのバージョン

実行中のmroongaのバージョンを確認するためのSQL例です:

mysql> SHOW VARIABLES LIKE 'groonga_version';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| groonga_version | 1.10  |
+-----------------+-------+
1 row in set (0.00 sec)

4.5. ステータス変数の一覧

独自に追加されたステータス変数を説明します。

4.5.1. groonga_count_skip

行カウント高速化機能が動作する度にカウントアップされます。スキーマ/SQLチューニングを行って行カウント高速化機能を利用できるようにした際の動作確認に利用できます。

確認例です:

mysql> SHOW STATUS LIKE 'groonga_count_skip';
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| groonga_count_skip | 0     |
+--------------------+-------+
1 row in set (0.00 sec)

4.5.2. groonga_fast_order_limit

ORDER BY LIMIT 高速化機能が動作する度にカウントアップされます。スキーマ/SQLチューニングを行って ORDER BY LIMIT 高速化機能を利用できるようにした際の動作確認に利用できます。

確認例です:

mysql> SHOW STATUS LIKE 'groonga_fast_order_limit';
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| groonga_fast_order_limit | 0     |
+--------------------------+-------+
1 row in set (0.00 sec)