仮想開発環境の構築トップページ


MySQL を使う

ここの手順で Ubuntu の設定をすると MySQL データベース管理システムがインストールされています.このページでは MySQL を使った検索方法などを確認しよう.

目次

  1. データベース操作の基本
  2. Ngram インデックス
  3. MeCab インデックス
  4. mecab-ipadic-NEologd を使った MeCab インデックス
  5. 他のホストからの接続

MeCab インデックス

ここでは形態素解析器の代表格である MeCab を使ったフルテキストインデックスを MySQL で利用する方法について説明します.すでにここの手順に従って MeCab がインストールされているものとします.

プラグインの確認

MySQL と MeCab をインストールしただけでは,MySQL に MeCab 用のプラグインはインストールされていないはずです.まずそのことを確認しておきます.Ngram のプラグインは利用可能であることはわかりました.

vagrant@ubuntu2204 ~ $ mysql -u dbuser -p ⏎
Enter password: # パスワードを入力(表示されない)
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 16
Server version: 8.0.31-0ubuntu0.22.04.1 (Ubuntu)

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> SHOW PLUGINS; ⏎
+---------------------------------+----------+--------------------+----------------+---------+
| Name                            | Status   | Type               | Library        | License |
+---------------------------------+----------+--------------------+----------------+---------+
| binlog                          | ACTIVE   | STORAGE ENGINE     | NULL           | GPL     |
| mysql_native_password           | ACTIVE   | AUTHENTICATION     | NULL           | GPL     |
| sha256_password                 | ACTIVE   | AUTHENTICATION     | NULL           | GPL     |
| caching_sha2_password           | ACTIVE   | AUTHENTICATION     | NULL           | GPL     |
| sha2_cache_cleaner              | ACTIVE   | AUDIT              | NULL           | GPL     |
| daemon_keyring_proxy_plugin     | ACTIVE   | DAEMON             | NULL           | GPL     |
| CSV                             | ACTIVE   | STORAGE ENGINE     | NULL           | GPL     |
| MEMORY                          | ACTIVE   | STORAGE ENGINE     | NULL           | GPL     |
| InnoDB                          | ACTIVE   | STORAGE ENGINE     | NULL           | GPL     |
| INNODB_TRX                      | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_CMP                      | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_CMP_RESET                | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_CMPMEM                   | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_CMPMEM_RESET             | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_CMP_PER_INDEX            | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_CMP_PER_INDEX_RESET      | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_BUFFER_PAGE              | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_BUFFER_PAGE_LRU          | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_BUFFER_POOL_STATS        | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_TEMP_TABLE_INFO          | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_METRICS                  | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_FT_DEFAULT_STOPWORD      | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_FT_DELETED               | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_FT_BEING_DELETED         | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_FT_CONFIG                | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_FT_INDEX_CACHE           | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_FT_INDEX_TABLE           | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_TABLES                   | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_TABLESTATS               | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_INDEXES                  | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_TABLESPACES              | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_COLUMNS                  | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_VIRTUAL                  | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_CACHED_INDEXES           | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_SESSION_TEMP_TABLESPACES | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| MyISAM                          | ACTIVE   | STORAGE ENGINE     | NULL           | GPL     |
| MRG_MYISAM                      | ACTIVE   | STORAGE ENGINE     | NULL           | GPL     |
| PERFORMANCE_SCHEMA              | ACTIVE   | STORAGE ENGINE     | NULL           | GPL     |
| TempTable                       | ACTIVE   | STORAGE ENGINE     | NULL           | GPL     |
| ARCHIVE                         | ACTIVE   | STORAGE ENGINE     | NULL           | GPL     |
| BLACKHOLE                       | ACTIVE   | STORAGE ENGINE     | NULL           | GPL     |
| FEDERATED                       | DISABLED | STORAGE ENGINE     | NULL           | GPL     |
| ngram                           | ACTIVE   | FTPARSER           | NULL           | GPL     |
| mysqlx_cache_cleaner            | ACTIVE   | AUDIT              | NULL           | GPL     |
| mysqlx                          | ACTIVE   | DAEMON             | NULL           | GPL     |
| auth_socket                     | ACTIVE   | AUTHENTICATION     | auth_socket.so | GPL     |
+---------------------------------+----------+--------------------+----------------+---------+
46 rows in set (0.00 sec)

mysql> EXIT ⏎
Bye
vagrant@ubuntu2204 ~ $

目次に戻る

MeCab の設定

MySQL から MeCab を利用するために,/etc/mecabrc/etc/mysql/mecabrc としてコピーします.

vagrant@ubuntu2204 ~ $ ls -l /etc | grep mecab ⏎
-rw-r--r-- 1 root root        288  3月 18  2022 mecabrc
vagrant@ubuntu2204 ~ $ sudo cp /etc/mecabrc /etc/mysql/mecabrc ⏎

コピーできたことを確認して vi エディタ(あるいは好みのエディタ)で編集します.

vagrant@ubuntu2204 ~ $ cd /etc/mysql ⏎
vagrant@ubuntu2204 mysql $ ls -l ⏎
total 28
drwxr-xr-x 2 root root 4096 10月 27 09:37 conf.d
-rwxr-xr-x 1 root root  120 10月 19 20:35 debian-start
-rw------- 1 root root  317 10月 27 09:37 debian.cnf
-rw-r--r-- 1 root root  288 10月 27 12:03 mecabrc
lrwxrwxrwx 1 root root   24 10月 27 09:37 my.cnf -> /etc/alternatives/my.cnf
-rw-r--r-- 1 root root  839 10月 20  2020 my.cnf.fallback
-rw-r--r-- 1 root root  682  3月 11  2021 mysql.cnf
drwxr-xr-x 2 root root 4096 10月 27 12:08 mysql.conf.d
vagrant@ubuntu2204 mysql $ sudo vi mecabrc ⏎

次のように辞書のディレクトリ(フォルダ)を指定します.行の先頭にある「;」はその行がコメント行であることを意味します.つまり,7 行目だけが実際に必要な内容です.

/etc/mysql/mecabrc
;
; Configuration file of MeCab
;
; $Id: mecabrc.in,v 1.3 2006/05/29 15:36:08 taku-ku Exp $;
;
; dicdir = /var/lib/mecab/dic/debian
dicdir = /var/lib/mecab/dic/ipadic-utf8
; dicdir = /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd

; userdic = /home/foo/bar/user.dic

; output-format-type = wakati
; input-buffer-size = 8192

; node-format = %m\n
; bos-format = %S\n
; eos-format = EOS\n

さらに,/etc/mysql/mysql.conf.d フォルダに mecabrc.cnf ファイルを作成して編集します.

vagrant@ubuntu2204 ~ $ cd /etc/mysql/mysql.conf.d ⏎
vagrant@ubuntu2204 mysql.conf.d $ ls -l ⏎
total 8
-rw-r--r-- 1 root root  132  3月 11  2021 mysql.cnf
-rw-r--r-- 1 root root 2230 10月 27 09:38 mysqld.cnf
vagrant@ubuntu2204 mysql.conf.d $ sudo touch mecabrc.cnf ⏎
vagrant@ubuntu2204 mysql.conf.d $ sudo vi mecabrc.cnf ⏎

次のような内容を記述します.なお,フルテキストインデックスの最小トークンサイズを1に設定しています.このデフォルト値は3です.日本語文字を使用する場合は1に設定すると良いようです.

/etc/mysql/mysql.conf.d/mecabrc.cnf
[mysqld]
loose-mecab-rc-file=/etc/mysql/mecabrc
innodb_ft_min_token_size=1

設定変更を有効化するために MySQL を再起動します.

vagrant@ubuntu2204 mysql $ cd ⏎
vagrant@ubuntu2204 ~ $ sudo systemctl restart mysql ⏎
vagrant@ubuntu2204 ~ $ sudo systemctl status mysql ⏎
● mysql.service - MySQL Community Server
     Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2022-10-27 12:11:59 JST; 5s ago
    Process: 14104 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
   Main PID: 14112 (mysqld)
     Status: "Server is operational"
      Tasks: 39 (limit: 2236)
     Memory: 369.4M
        CPU: 948ms
     CGroup: /system.slice/mysql.service
             └─14112 /usr/sbin/mysqld

10月 27 12:11:58 ubuntu2204.localdomain systemd[1]: Starting MySQL Community Server...
10月 27 12:11:59 ubuntu2204.localdomain systemd[1]: Started MySQL Community Server.
vagrant@ubuntu2204 ~ $

目次に戻る

プラグインのインストール

プラグインをインストールするために root で MySQL にログインします.

vagrant@ubuntu2204 ~ $ mysql -u root -p ⏎
Enter password: # パスワードを入力(表示されない)
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.31-0ubuntu0.22.04.1 (Ubuntu)

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> SHOW PLUGINS; ⏎
+---------------------------------+----------+--------------------+----------------+---------+
| Name                            | Status   | Type               | Library        | License |
+---------------------------------+----------+--------------------+----------------+---------+
| binlog                          | ACTIVE   | STORAGE ENGINE     | NULL           | GPL     |
| mysql_native_password           | ACTIVE   | AUTHENTICATION     | NULL           | GPL     |
| sha256_password                 | ACTIVE   | AUTHENTICATION     | NULL           | GPL     |
| caching_sha2_password           | ACTIVE   | AUTHENTICATION     | NULL           | GPL     |
| sha2_cache_cleaner              | ACTIVE   | AUDIT              | NULL           | GPL     |
| daemon_keyring_proxy_plugin     | ACTIVE   | DAEMON             | NULL           | GPL     |
| CSV                             | ACTIVE   | STORAGE ENGINE     | NULL           | GPL     |
| MEMORY                          | ACTIVE   | STORAGE ENGINE     | NULL           | GPL     |
| InnoDB                          | ACTIVE   | STORAGE ENGINE     | NULL           | GPL     |
| INNODB_TRX                      | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_CMP                      | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_CMP_RESET                | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_CMPMEM                   | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_CMPMEM_RESET             | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_CMP_PER_INDEX            | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_CMP_PER_INDEX_RESET      | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_BUFFER_PAGE              | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_BUFFER_PAGE_LRU          | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_BUFFER_POOL_STATS        | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_TEMP_TABLE_INFO          | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_METRICS                  | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_FT_DEFAULT_STOPWORD      | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_FT_DELETED               | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_FT_BEING_DELETED         | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_FT_CONFIG                | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_FT_INDEX_CACHE           | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_FT_INDEX_TABLE           | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_TABLES                   | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_TABLESTATS               | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_INDEXES                  | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_TABLESPACES              | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_COLUMNS                  | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_VIRTUAL                  | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_CACHED_INDEXES           | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| INNODB_SESSION_TEMP_TABLESPACES | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
| MyISAM                          | ACTIVE   | STORAGE ENGINE     | NULL           | GPL     |
| MRG_MYISAM                      | ACTIVE   | STORAGE ENGINE     | NULL           | GPL     |
| PERFORMANCE_SCHEMA              | ACTIVE   | STORAGE ENGINE     | NULL           | GPL     |
| TempTable                       | ACTIVE   | STORAGE ENGINE     | NULL           | GPL     |
| ARCHIVE                         | ACTIVE   | STORAGE ENGINE     | NULL           | GPL     |
| BLACKHOLE                       | ACTIVE   | STORAGE ENGINE     | NULL           | GPL     |
| FEDERATED                       | DISABLED | STORAGE ENGINE     | NULL           | GPL     |
| ngram                           | ACTIVE   | FTPARSER           | NULL           | GPL     |
| mysqlx_cache_cleaner            | ACTIVE   | AUDIT              | NULL           | GPL     |
| mysqlx                          | ACTIVE   | DAEMON             | NULL           | GPL     |
| auth_socket                     | ACTIVE   | AUTHENTICATION     | auth_socket.so | GPL     |
+---------------------------------+----------+--------------------+----------------+---------+
46 rows in set (0.00 sec)

mysql>

プラグインをインストールして,インストールできたことも確認します.

mysql> INSTALL PLUGIN mecab SONAME 'libpluginmecab.so'; ⏎
Query OK, 0 rows affected (0.03 sec)

mysql> SHOW PLUGINS; ⏎
+---------------------------------+----------+--------------------+-------------------+---------+
| Name                            | Status   | Type               | Library           | License |
+---------------------------------+----------+--------------------+-------------------+---------+
| binlog                          | ACTIVE   | STORAGE ENGINE     | NULL              | GPL     |
| mysql_native_password           | ACTIVE   | AUTHENTICATION     | NULL              | GPL     |
| sha256_password                 | ACTIVE   | AUTHENTICATION     | NULL              | GPL     |
| caching_sha2_password           | ACTIVE   | AUTHENTICATION     | NULL              | GPL     |
| sha2_cache_cleaner              | ACTIVE   | AUDIT              | NULL              | GPL     |
| daemon_keyring_proxy_plugin     | ACTIVE   | DAEMON             | NULL              | GPL     |
| CSV                             | ACTIVE   | STORAGE ENGINE     | NULL              | GPL     |
| MEMORY                          | ACTIVE   | STORAGE ENGINE     | NULL              | GPL     |
| InnoDB                          | ACTIVE   | STORAGE ENGINE     | NULL              | GPL     |
| INNODB_TRX                      | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_CMP                      | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_CMP_RESET                | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_CMPMEM                   | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_CMPMEM_RESET             | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_CMP_PER_INDEX            | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_CMP_PER_INDEX_RESET      | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_BUFFER_PAGE              | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_BUFFER_PAGE_LRU          | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_BUFFER_POOL_STATS        | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_TEMP_TABLE_INFO          | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_METRICS                  | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_FT_DEFAULT_STOPWORD      | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_FT_DELETED               | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_FT_BEING_DELETED         | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_FT_CONFIG                | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_FT_INDEX_CACHE           | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_FT_INDEX_TABLE           | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_TABLES                   | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_TABLESTATS               | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_INDEXES                  | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_TABLESPACES              | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_COLUMNS                  | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_VIRTUAL                  | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_CACHED_INDEXES           | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_SESSION_TEMP_TABLESPACES | ACTIVE   | INFORMATION SCHEMA | NULL              | GPL     |
| MyISAM                          | ACTIVE   | STORAGE ENGINE     | NULL              | GPL     |
| MRG_MYISAM                      | ACTIVE   | STORAGE ENGINE     | NULL              | GPL     |
| PERFORMANCE_SCHEMA              | ACTIVE   | STORAGE ENGINE     | NULL              | GPL     |
| TempTable                       | ACTIVE   | STORAGE ENGINE     | NULL              | GPL     |
| ARCHIVE                         | ACTIVE   | STORAGE ENGINE     | NULL              | GPL     |
| BLACKHOLE                       | ACTIVE   | STORAGE ENGINE     | NULL              | GPL     |
| FEDERATED                       | DISABLED | STORAGE ENGINE     | NULL              | GPL     |
| ngram                           | ACTIVE   | FTPARSER           | NULL              | GPL     |
| mysqlx_cache_cleaner            | ACTIVE   | AUDIT              | NULL              | GPL     |
| mysqlx                          | ACTIVE   | DAEMON             | NULL              | GPL     |
| auth_socket                     | ACTIVE   | AUTHENTICATION     | auth_socket.so    | GPL     |
| mecab                           | ACTIVE   | FTPARSER           | libpluginmecab.so | GPL     |
+---------------------------------+----------+--------------------+-------------------+---------+
47 rows in set (0.00 sec)

mysql> EXIT ⏎
Bye
vagrant@ubuntu2204 ~ $

目次に戻る

テーブルの作成とインデックス指定

dbuser でログインし,データベースを選択します.

vagrant@ubuntu2204 ~ $ mysql -u dbuser -p ⏎
Enter password: # パスワードを入力(表示されない)
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.31-0ubuntu0.22.04.1 (Ubuntu)

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> USE testDB; ⏎
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql>

テーブルを作成するときに MeCab のインデックスも body フィールドに設定します.

mysql> CREATE TABLE mecab_articles (
        id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
        body TEXT,
        FULLTEXT (body) WITH PARSER mecab
    ) ENGINE=InnoDB CHARACTER SET utf8; ⏎
Query OK, 0 rows affected, 1 warning (0.13 sec)

mysql>

テーブルの定義を確認します.

mysql> DESC mecab_articles; ⏎
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int unsigned | NO   | PRI | NULL    | auto_increment |
| body  | text         | YES  | MUL | NULL    |                |
+-------+--------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)

mysql> SHOW CREATE TABLE mecab_articles\G ⏎
*************************** 1. row ***************************
       Table: mecab_articles
Create Table: CREATE TABLE `mecab_articles` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,
  `body` text,
  PRIMARY KEY (`id`),
  FULLTEXT KEY `body` (`body`) /*!50100 WITH PARSER `mecab` */
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3
1 row in set (0.00 sec)

mysql>

目次に戻る

データの投入

12 件のデータを一気に投入します.

mysql> INSERT INTO mecab_articles (body) VALUES
    ('今日の天気は雨です'),
    ('明日の天気も雨でしょう'),
    ('明日の天気も晴れでしょう'),
    ('今日の天気は晴れです'),
    ('勤務先の社内自然言語処理勉強会での発表資料です'),
    ('この文書は自然言語処理の基本として類似文書推薦について説明します'),
    ('この資料はジャズのライブについてまとめた資料です'),
    ('自然言語処理の基本を説明します'),
    ('We consider a software rejuvenation schedule.'),
    ('We propose an extended warranty service contract.'),
    ('This model evaluates the quality characteristics of software.'),
    ('複数の言語に対応した software 開発を勉強します'); ⏎
Query OK, 12 rows affected (0.10 sec)
Records: 12  Duplicates: 0  Warnings: 0

mysql>

mysql> SELECT * FROM mecab_articles; ⏎
+----+--------------------------------------------------------------------------------------------------+
| id | body                                                                                             |
+----+--------------------------------------------------------------------------------------------------+
|  1 | 今日の天気は雨です                                                                               |
|  2 | 明日の天気も雨でしょう                                                                           |
|  3 | 明日の天気も晴れでしょう                                                                         |
|  4 | 今日の天気は晴れです                                                                             |
|  5 | 勤務先の社内自然言語処理勉強会での発表資料です                                                   |
|  6 | この文書は自然言語処理の基本として類似文書推薦について説明します                                 |
|  7 | この資料はジャズのライブについてまとめた資料です                                                 |
|  8 | 自然言語処理の基本を説明します                                                                   |
|  9 | We consider a software rejuvenation schedule.                                                    |
| 10 | We propose an extended warranty service contract.                                                |
| 11 | This model evaluates the quality characteristics of software.                                    |
| 12 | 複数の言語に対応した software 開発を勉強します                                                   |
+----+--------------------------------------------------------------------------------------------------+
12 rows in set (0.00 sec)

mysql>

目次に戻る

MeCab インデックスを使った全文検索

MeCab フルテキストインデックスを利用した全文検索を行います.上で投入したわずか12件のデータでは Ngram を使った検索と検索結果に差は現れませんでした.

mysql> SELECT * FROM mecab_articles
    WHERE MATCH(body) AGAINST("software"); ⏎
+----+------------------------------------------------------------------+
| id | body                                                             |
+----+------------------------------------------------------------------+
|  9 | We consider a software rejuvenation schedule.                    |
| 11 | This model evaluates the quality characteristics of software.    |
| 12 | 複数の言語に対応した software 開発を勉強します                   |
+----+------------------------------------------------------------------+
3 rows in set (0.00 sec)

mysql> SELECT * FROM mecab_articles
    WHERE MATCH(body) AGAINST("晴れ"); ⏎
+----+--------------------------------------+
| id | body                                 |
+----+--------------------------------------+
|  3 | 明日の天気も晴れでしょう             |
|  4 | 今日の天気は晴れです                 |
+----+--------------------------------------+
2 rows in set (0.00 sec)

mysql> SELECT * FROM mecab_articles
    WHERE MATCH(body) AGAINST("自然言語"); ⏎
+----+--------------------------------------------------------------------------------------------------+
| id | body                                                                                             |
+----+--------------------------------------------------------------------------------------------------+
|  5 | 勤務先の社内自然言語処理勉強会での発表資料です                                                   |
|  6 | この文書は自然言語処理の基本として類似文書推薦について説明します                                 |
|  8 | 自然言語処理の基本を説明します                                                                   |
| 12 | 複数の言語に対応した software 開発を勉強します                                                   |
+----+--------------------------------------------------------------------------------------------------+
4 rows in set (0.00 sec)

mysql> SELECT * FROM mecab_articles
    WHERE MATCH(body) AGAINST("言語"); ⏎
+----+--------------------------------------------------------------------------------------------------+
| id | body                                                                                             |
+----+--------------------------------------------------------------------------------------------------+
|  5 | 勤務先の社内自然言語処理勉強会での発表資料です                                                   |
|  6 | この文書は自然言語処理の基本として類似文書推薦について説明します                                 |
|  8 | 自然言語処理の基本を説明します                                                                   |
| 12 | 複数の言語に対応した software 開発を勉強します                                                   |
+----+--------------------------------------------------------------------------------------------------+
4 rows in set (0.00 sec)

mysql>

目次に戻る

全文検索のモード

Ngram のときと同様に「NATURAL LANGUAGE MODE」と「BOOLEAN MODE」の検索モードが利用できます.やはりここでも「自然言語」で検索したときには二つのモードで検索結果に差が現れました.

mysql> SELECT * FROM mecab_articles
    WHERE MATCH(body)
    AGAINST("software" IN NATURAL LANGUAGE MODE); ⏎
+----+------------------------------------------------------------------+
| id | body                                                             |
+----+------------------------------------------------------------------+
|  9 | We consider a software rejuvenation schedule.                    |
| 11 | This model evaluates the quality characteristics of software.    |
| 12 | 複数の言語に対応した software 開発を勉強します                   |
+----+------------------------------------------------------------------+
3 rows in set (0.00 sec)

mysql> SELECT * FROM mecab_articles
    WHERE MATCH(body)
    AGAINST("software" IN BOOLEAN MODE); ⏎
+----+------------------------------------------------------------------+
| id | body                                                             |
+----+------------------------------------------------------------------+
|  9 | We consider a software rejuvenation schedule.                    |
| 11 | This model evaluates the quality characteristics of software.    |
| 12 | 複数の言語に対応した software 開発を勉強します                   |
+----+------------------------------------------------------------------+
3 rows in set (0.00 sec)

mysql>

mysql> SELECT * FROM mecab_articles
    WHERE MATCH(body)
    AGAINST("晴れ" IN NATURAL LANGUAGE MODE); ⏎
+----+--------------------------------------+
| id | body                                 |
+----+--------------------------------------+
|  3 | 明日の天気も晴れでしょう             |
|  4 | 今日の天気は晴れです                 |
+----+--------------------------------------+
2 rows in set (0.00 sec)

mysql> SELECT * FROM mecab_articles
    WHERE MATCH(body)
    AGAINST("晴れ" IN BOOLEAN MODE); ⏎
+----+--------------------------------------+
| id | body                                 |
+----+--------------------------------------+
|  3 | 明日の天気も晴れでしょう             |
|  4 | 今日の天気は晴れです                 |
+----+--------------------------------------+
2 rows in set (0.00 sec)

mysql>

mysql> SELECT * FROM mecab_articles
    WHERE MATCH(body)
    AGAINST("自然言語" IN NATURAL LANGUAGE MODE); ⏎
+----+--------------------------------------------------------------------------------------------------+
| id | body                                                                                             |
+----+--------------------------------------------------------------------------------------------------+
|  5 | 勤務先の社内自然言語処理勉強会での発表資料です                                                   |
|  6 | この文書は自然言語処理の基本として類似文書推薦について説明します                                 |
|  8 | 自然言語処理の基本を説明します                                                                   |
| 12 | 複数の言語に対応した software 開発を勉強します                                                   |
+----+--------------------------------------------------------------------------------------------------+
4 rows in set (0.01 sec)

mysql> SELECT * FROM mecab_articles
    WHERE MATCH(body)
    AGAINST("自然言語" IN BOOLEAN MODE); ⏎
+----+--------------------------------------------------------------------------------------------------+
| id | body                                                                                             |
+----+--------------------------------------------------------------------------------------------------+
|  5 | 勤務先の社内自然言語処理勉強会での発表資料です                                                   |
|  6 | この文書は自然言語処理の基本として類似文書推薦について説明します                                 |
|  8 | 自然言語処理の基本を説明します                                                                   |
+----+--------------------------------------------------------------------------------------------------+
3 rows in set (0.00 sec)

mysql>

mysql> SELECT * FROM mecab_articles
    WHERE MATCH(body)
    AGAINST("言語" IN NATURAL LANGUAGE MODE); ⏎
+----+--------------------------------------------------------------------------------------------------+
| id | body                                                                                             |
+----+--------------------------------------------------------------------------------------------------+
|  5 | 勤務先の社内自然言語処理勉強会での発表資料です                                                   |
|  6 | この文書は自然言語処理の基本として類似文書推薦について説明します                                 |
|  8 | 自然言語処理の基本を説明します                                                                   |
| 12 | 複数の言語に対応した software 開発を勉強します                                                   |
+----+--------------------------------------------------------------------------------------------------+
4 rows in set (0.00 sec)

mysql> SELECT * FROM mecab_articles
    WHERE MATCH(body)
    AGAINST("言語" IN BOOLEAN MODE); ⏎
+----+--------------------------------------------------------------------------------------------------+
| id | body                                                                                             |
+----+--------------------------------------------------------------------------------------------------+
|  5 | 勤務先の社内自然言語処理勉強会での発表資料です                                                   |
|  6 | この文書は自然言語処理の基本として類似文書推薦について説明します                                 |
|  8 | 自然言語処理の基本を説明します                                                                   |
| 12 | 複数の言語に対応した software 開発を勉強します                                                   |
+----+--------------------------------------------------------------------------------------------------+
4 rows in set (0.00 sec)

mysql>

目次に戻る

1文字での検索

Ngram ではできなかった日本語1文字での検索も出来ました.

mysql> SELECT * FROM mecab_articles
    WHERE MATCH(body)
    AGAINST("雨" IN NATURAL LANGUAGE MODE); ⏎
+----+-----------------------------------+
| id | body                              |
+----+-----------------------------------+
|  1 | 今日の天気は雨です                |
|  2 | 明日の天気も雨でしょう            |
+----+-----------------------------------+
2 rows in set (0.00 sec)

mysql> SELECT * FROM mecab_articles
    WHERE MATCH(body)
    AGAINST("雨" IN BOOLEAN MODE); ⏎
+----+-----------------------------------+
| id | body                              |
+----+-----------------------------------+
|  1 | 今日の天気は雨です                |
|  2 | 明日の天気も雨でしょう            |
+----+-----------------------------------+
2 rows in set (0.00 sec)

mysql> SELECT * FROM mecab_articles
    WHERE MATCH(body)
    AGAINST("は" IN NATURAL LANGUAGE MODE); ⏎
+----+--------------------------------------------------------------------------------------------------+
| id | body                                                                                             |
+----+--------------------------------------------------------------------------------------------------+
|  1 | 今日の天気は雨です                                                                               |
|  4 | 今日の天気は晴れです                                                                             |
|  6 | この文書は自然言語処理の基本として類似文書推薦について説明します                                 |
|  7 | この資料はジャズのライブについてまとめた資料です                                                 |
+----+--------------------------------------------------------------------------------------------------+
4 rows in set (0.00 sec)

mysql> SELECT * FROM mecab_articles
    WHERE MATCH(body)
    AGAINST("は" IN BOOLEAN MODE); ⏎
+----+--------------------------------------------------------------------------------------------------+
| id | body                                                                                             |
+----+--------------------------------------------------------------------------------------------------+
|  1 | 今日の天気は雨です                                                                               |
|  4 | 今日の天気は晴れです                                                                             |
|  6 | この文書は自然言語処理の基本として類似文書推薦について説明します                                 |
|  7 | この資料はジャズのライブについてまとめた資料です                                                 |
+----+--------------------------------------------------------------------------------------------------+
4 rows in set (0.00 sec)

mysql>

アルファベット1文字では検索できませんでした.

mysql> SELECT * FROM mecab_articles
    WHERE MATCH(body)
    AGAINST("s" IN NATURAL LANGUAGE MODE); ⏎
Empty set (0.00 sec)

mysql> SELECT * FROM mecab_articles
    WHERE MATCH(body)
    AGAINST("s" IN BOOLEAN MODE); ⏎
Empty set (0.00 sec)

目次に戻る

検索スコアの表示

検索スコアを表示することも可能です.「NATURAL LANGUAGE MODE」では「自然言語」で検索したときに「言語」が検索されましたが,そのレコードのスコアが他と比べて低いことがわかります.

mysql> SELECT id, body,
    MATCH(body) AGAINST("自然言語" IN NATURAL LANGUAGE MODE) as score
    FROM mecab_articles; ⏎
+----+--------------------------------------------------------------------------------------------------+---------------------+
| id | body                                                                                             | score               |
+----+--------------------------------------------------------------------------------------------------+---------------------+
|  1 | 今日の天気は雨です                                                                               |                   0 |
|  2 | 明日の天気も雨でしょう                                                                           |                   0 |
|  3 | 明日の天気も晴れでしょう                                                                         |                   0 |
|  4 | 今日の天気は晴れです                                                                             |                   0 |
|  5 | 勤務先の社内自然言語処理勉強会での発表資料です                                                   |  0.5901209115982056 |
|  6 | この文書は自然言語処理の基本として類似文書推薦について説明します                                 |  0.5901209115982056 |
|  7 | この資料はジャズのライブについてまとめた資料です                                                 |                   0 |
|  8 | 自然言語処理の基本を説明します                                                                   |  0.5901209115982056 |
|  9 | We consider a software rejuvenation schedule.                                                    |                   0 |
| 10 | We propose an extended warranty service contract.                                                |                   0 |
| 11 | This model evaluates the quality characteristics of software.                                    |                   0 |
| 12 | 複数の言語に対応した software 開発を勉強します                                                   | 0.22764469683170319 |
+----+--------------------------------------------------------------------------------------------------+---------------------+
12 rows in set (0.00 sec)

mysql> SELECT id, body,
    MATCH(body) AGAINST("自然言語" IN BOOLEAN MODE) as score
    FROM mecab_articles; ⏎
+----+--------------------------------------------------------------------------------------------------+--------------------+
| id | body                                                                                             | score              |
+----+--------------------------------------------------------------------------------------------------+--------------------+
|  1 | 今日の天気は雨です                                                                               |                  0 |
|  2 | 明日の天気も雨でしょう                                                                           |                  0 |
|  3 | 明日の天気も晴れでしょう                                                                         |                  0 |
|  4 | 今日の天気は晴れです                                                                             |                  0 |
|  5 | 勤務先の社内自然言語処理勉強会での発表資料です                                                   | 0.5901209115982056 |
|  6 | この文書は自然言語処理の基本として類似文書推薦について説明します                                 | 0.5901209115982056 |
|  7 | この資料はジャズのライブについてまとめた資料です                                                 |                  0 |
|  8 | 自然言語処理の基本を説明します                                                                   | 0.5901209115982056 |
|  9 | We consider a software rejuvenation schedule.                                                    |                  0 |
| 10 | We propose an extended warranty service contract.                                                |                  0 |
| 11 | This model evaluates the quality characteristics of software.                                    |                  0 |
| 12 | 複数の言語に対応した software 開発を勉強します                                                   |                  0 |
+----+--------------------------------------------------------------------------------------------------+--------------------+
12 rows in set (0.01 sec)

mysql> EXIT ⏎
Bye
vagrant@ubuntu2204 ~ $

目次に戻る

インデックス詳細情報の確認

インデックスの詳細情報を確認するために root でログインし,インデックスを確認したいデータベースとテーブルを指定します.

vagrant@ubuntu2204 ~ $ mysql -u root -p ⏎
Enter password: # パスワードを入力(表示されない)
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.31-0ubuntu0.22.04.1 (Ubuntu)

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> SET GLOBAL innodb_ft_aux_table="testDB/mecab_articles"; ⏎
Query OK, 0 rows affected (0.00 sec)

mysql>

information_schema データベースに移動します.

mysql> SHOW DATABASES; ⏎
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| testDB             |
+--------------------+
5 rows in set (0.00 sec)

mysql> USE information_schema; ⏎
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql>

多くのテーブルが定義されていますが,その中の INNODB_FT_INDEX_CACHE(または INNODB_FT_INDEX_TABLE)テーブルにインデクスの情報が格納されています.

mysql> SHOW TABLES; ⏎
+---------------------------------------+
| Tables_in_information_schema          |
+---------------------------------------+
| ADMINISTRABLE_ROLE_AUTHORIZATIONS     |
| APPLICABLE_ROLES                      |
| CHARACTER_SETS                        |
| CHECK_CONSTRAINTS                     |
| COLLATIONS                            |
| COLLATION_CHARACTER_SET_APPLICABILITY |
| COLUMNS                               |
| COLUMNS_EXTENSIONS                    |
| COLUMN_PRIVILEGES                     |
| COLUMN_STATISTICS                     |
| ENABLED_ROLES                         |
| ENGINES                               |
| EVENTS                                |
| FILES                                 |
| INNODB_BUFFER_PAGE                    |
| INNODB_BUFFER_PAGE_LRU                |
| INNODB_BUFFER_POOL_STATS              |
| INNODB_CACHED_INDEXES                 |
| INNODB_CMP                            |
| INNODB_CMPMEM                         |
| INNODB_CMPMEM_RESET                   |
| INNODB_CMP_PER_INDEX                  |
| INNODB_CMP_PER_INDEX_RESET            |
| INNODB_CMP_RESET                      |
| INNODB_COLUMNS                        |
| INNODB_DATAFILES                      |
| INNODB_FIELDS                         |
| INNODB_FOREIGN                        |
| INNODB_FOREIGN_COLS                   |
| INNODB_FT_BEING_DELETED               |
| INNODB_FT_CONFIG                      |
| INNODB_FT_DEFAULT_STOPWORD            |
| INNODB_FT_DELETED                     |
| INNODB_FT_INDEX_CACHE                 |
| INNODB_FT_INDEX_TABLE                 |
| INNODB_INDEXES                        |
| INNODB_METRICS                        |
| INNODB_SESSION_TEMP_TABLESPACES       |
| INNODB_TABLES                         |
| INNODB_TABLESPACES                    |
| INNODB_TABLESPACES_BRIEF              |
| INNODB_TABLESTATS                     |
| INNODB_TEMP_TABLE_INFO                |
| INNODB_TRX                            |
| INNODB_VIRTUAL                        |
| KEYWORDS                              |
| KEY_COLUMN_USAGE                      |
| OPTIMIZER_TRACE                       |
| PARAMETERS                            |
| PARTITIONS                            |
| PLUGINS                               |
| PROCESSLIST                           |
| PROFILING                             |
| REFERENTIAL_CONSTRAINTS               |
| RESOURCE_GROUPS                       |
| ROLE_COLUMN_GRANTS                    |
| ROLE_ROUTINE_GRANTS                   |
| ROLE_TABLE_GRANTS                     |
| ROUTINES                              |
| SCHEMATA                              |
| SCHEMATA_EXTENSIONS                   |
| SCHEMA_PRIVILEGES                     |
| STATISTICS                            |
| ST_GEOMETRY_COLUMNS                   |
| ST_SPATIAL_REFERENCE_SYSTEMS          |
| ST_UNITS_OF_MEASURE                   |
| TABLES                                |
| TABLESPACES                           |
| TABLESPACES_EXTENSIONS                |
| TABLES_EXTENSIONS                     |
| TABLE_CONSTRAINTS                     |
| TABLE_CONSTRAINTS_EXTENSIONS          |
| TABLE_PRIVILEGES                      |
| TRIGGERS                              |
| USER_ATTRIBUTES                       |
| USER_PRIVILEGES                       |
| VIEWS                                 |
| VIEW_ROUTINE_USAGE                    |
| VIEW_TABLE_USAGE                      |
+---------------------------------------+
79 rows in set (0.01 sec)

mysql>

インデックスを確認します.単語(厳密には形態素)ごとに分割されてインデックス化されていることがわかりました.

mysql> SELECT * FROM INNODB_FT_INDEX_CACHE ORDER BY doc_id, position; ⏎
+-----------------+--------------+-------------+-----------+--------+----------+
| WORD            | FIRST_DOC_ID | LAST_DOC_ID | DOC_COUNT | DOC_ID | POSITION |
+-----------------+--------------+-------------+-----------+--------+----------+
| 今日            |            2 |           5 |         2 |      2 |        0 |
| の              |            2 |          13 |         9 |      2 |        6 |
| 天気            |            2 |           5 |         4 |      2 |        9 |
| は              |            2 |           8 |         4 |      2 |       15 |
| 雨              |            2 |           3 |         2 |      2 |       18 |
| です            |            2 |           8 |         4 |      2 |       21 |
| 明日            |            3 |           4 |         2 |      3 |        0 |
| の              |            2 |          13 |         9 |      3 |        6 |
| 天気            |            2 |           5 |         4 |      3 |        9 |
| も              |            3 |           4 |         2 |      3 |       15 |
| 雨              |            2 |           3 |         2 |      3 |       18 |
| でしょ          |            3 |           4 |         2 |      3 |       21 |
| う              |            3 |           4 |         2 |      3 |       30 |
| 明日            |            3 |           4 |         2 |      4 |        0 |
| の              |            2 |          13 |         9 |      4 |        6 |
| 天気            |            2 |           5 |         4 |      4 |        9 |
| も              |            3 |           4 |         2 |      4 |       15 |
| 晴れ            |            4 |           5 |         2 |      4 |       18 |
| でしょ          |            3 |           4 |         2 |      4 |       24 |
| う              |            3 |           4 |         2 |      4 |       33 |
| 今日            |            2 |           5 |         2 |      5 |        0 |
| の              |            2 |          13 |         9 |      5 |        6 |
| 天気            |            2 |           5 |         4 |      5 |        9 |
| は              |            2 |           8 |         4 |      5 |       15 |
| 晴れ            |            4 |           5 |         2 |      5 |       18 |
| です            |            2 |           8 |         4 |      5 |       24 |
| 勤務            |            6 |           6 |         1 |      6 |        0 |
| 先              |            6 |           6 |         1 |      6 |        6 |
| の              |            2 |          13 |         9 |      6 |        9 |
| 社内            |            6 |           6 |         1 |      6 |       12 |
| 自然            |            6 |           9 |         3 |      6 |       18 |
| 言語            |            6 |          13 |         4 |      6 |       24 |
| 処理            |            6 |           9 |         3 |      6 |       30 |
| 勉強            |            6 |          13 |         2 |      6 |       36 |
| の              |            2 |          13 |         9 |      6 |       39 |
| 会              |            6 |           6 |         1 |      6 |       42 |
| で              |            6 |           6 |         1 |      6 |       45 |
| 発表            |            6 |           6 |         1 |      6 |       51 |
| 資料            |            6 |           8 |         2 |      6 |       57 |
| です            |            2 |           8 |         4 |      6 |       63 |
| この            |            7 |           8 |         2 |      7 |        0 |
| 文書            |            7 |           7 |         1 |      7 |        6 |
| は              |            2 |           8 |         4 |      7 |       12 |
| 自然            |            6 |           9 |         3 |      7 |       15 |
| 言語            |            6 |          13 |         4 |      7 |       21 |
| 処理            |            6 |           9 |         3 |      7 |       27 |
| の              |            2 |          13 |         9 |      7 |       33 |
| 基本            |            7 |           9 |         2 |      7 |       36 |
| として          |            7 |           7 |         1 |      7 |       42 |
| 文書            |            7 |           7 |         1 |      7 |       51 |
| 類似            |            7 |           7 |         1 |      7 |       51 |
| 推薦            |            7 |           7 |         1 |      7 |       63 |
| について        |            7 |           8 |         2 |      7 |       69 |
| 説明            |            7 |           9 |         2 |      7 |       81 |
| し              |            7 |          13 |         3 |      7 |       87 |
| ます            |            7 |          13 |         3 |      7 |       90 |
| この            |            7 |           8 |         2 |      8 |        0 |
| 資料            |            6 |           8 |         2 |      8 |        6 |
| は              |            2 |           8 |         4 |      8 |       12 |
| ジャズ          |            8 |           8 |         1 |      8 |       15 |
| の              |            2 |          13 |         9 |      8 |       24 |
| ライブ          |            8 |           8 |         1 |      8 |       27 |
| について        |            7 |           8 |         2 |      8 |       36 |
| まとめ          |            8 |           8 |         1 |      8 |       48 |
| 資料            |            6 |           8 |         2 |      8 |       54 |
| た              |            8 |          13 |         2 |      8 |       57 |
| です            |            2 |           8 |         4 |      8 |       66 |
| 自然            |            6 |           9 |         3 |      9 |        0 |
| 言語            |            6 |          13 |         4 |      9 |        6 |
| 処理            |            6 |           9 |         3 |      9 |       12 |
| の              |            2 |          13 |         9 |      9 |       18 |
| 基本            |            7 |           9 |         2 |      9 |       21 |
| を              |            9 |          13 |         2 |      9 |       27 |
| 説明            |            7 |           9 |         2 |      9 |       30 |
| し              |            7 |          13 |         3 |      9 |       36 |
| ます            |            7 |          13 |         3 |      9 |       39 |
| we              |           10 |          11 |         2 |     10 |        0 |
| consider        |           10 |          10 |         1 |     10 |        2 |
| software        |           10 |          13 |         3 |     10 |       13 |
| rejuvenation    |           10 |          10 |         1 |     10 |       22 |
| schedule        |           10 |          10 |         1 |     10 |       35 |
| .               |           10 |          12 |         3 |     10 |       44 |
| we              |           10 |          11 |         2 |     11 |        0 |
| propose         |           11 |          11 |         1 |     11 |        2 |
| extended        |           11 |          11 |         1 |     11 |       13 |
| warranty        |           11 |          11 |         1 |     11 |       22 |
| service         |           11 |          11 |         1 |     11 |       31 |
| contract        |           11 |          11 |         1 |     11 |       39 |
| .               |           10 |          12 |         3 |     11 |       48 |
| model           |           12 |          12 |         1 |     12 |        4 |
| evaluates       |           12 |          12 |         1 |     12 |       10 |
| quality         |           12 |          12 |         1 |     12 |       24 |
| characteristics |           12 |          12 |         1 |     12 |       32 |
| software        |           10 |          13 |         3 |     12 |       51 |
| .               |           10 |          12 |         3 |     12 |       60 |
| 複数            |           13 |          13 |         1 |     13 |        0 |
| の              |            2 |          13 |         9 |     13 |        6 |
| 言語            |            6 |          13 |         4 |     13 |        9 |
| に              |           13 |          13 |         1 |     13 |       15 |
| 対応            |           13 |          13 |         1 |     13 |       18 |
| し              |            7 |          13 |         3 |     13 |       24 |
| た              |            8 |          13 |         2 |     13 |       27 |
| software        |           10 |          13 |         3 |     13 |       30 |
| し              |            7 |          13 |         3 |     13 |       31 |
| 開発            |           13 |          13 |         1 |     13 |       39 |
| を              |            9 |          13 |         2 |     13 |       46 |
| 勉強            |            6 |          13 |         2 |     13 |       49 |
| ます            |            7 |          13 |         3 |     13 |       58 |
+-----------------+--------------+-------------+-----------+--------+----------+
108 rows in set (0.00 sec)

mysql> EXIT ⏎
Bye
vagrant@ubuntu2204 ~ $

目次に戻る