mysql 5.7 innodb 日本語全文検索(その2)

46
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | MySQL 5.7 InnoDB 日本語全文検索(その2) Yoshiaki Yamasaki / 山﨑 由章 MySQL Senior Sales Consultant, Asia Pacific and Japan updated: 2016/09/30

Upload: yoyamasaki

Post on 15-Apr-2017

1.094 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: MySQL 5.7 InnoDB 日本語全文検索(その2)

Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |

MySQL 5.7 InnoDB 日本語全文検索(その2)

Yoshiaki Yamasaki / 山﨑 由章 MySQL Senior Sales Consultant, Asia Pacific and Japan

updated: 2016/09/30

Page 2: MySQL 5.7 InnoDB 日本語全文検索(その2)

Copyright © 2016, Oracle and/or its affiliates. All rights reserved.

Safe Harbor Statement

以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。 また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。以下の事項は、マテリアルやコード、機能を提供することをコミットメントするものではない為、購買決定を行う際の判断材料になさらないで下さい。 オラクル製品に関して記載されている機能の開発、リリースおよび時期については、 弊社の裁量により決定されます。

2

Page 4: MySQL 5.7 InnoDB 日本語全文検索(その2)

Copyright © 2016, Oracle and/or its affiliates. All rights reserved.

少しだけ復習します

4

Page 5: MySQL 5.7 InnoDB 日本語全文検索(その2)

Copyright © 2016, Oracle and/or its affiliates. All rights reserved.

全文検索機能の仕組み

5

Page 6: MySQL 5.7 InnoDB 日本語全文検索(その2)

Copyright © 2016, Oracle and/or its affiliates. All rights reserved.

全文検索インデックス

• トークンと文章の関係を表現した転置インデックス

6

This movie is about a boy going to war.

This movie is about a

girl starting an auto-

shop.

This movie is about

flowers.

a about an are as at be by com de en for from

how i in is it la of

on or that the this to

was what when where

who will with und

the www

Min Token Size

Max Token Size

Document 1

Document 2

Document 3

Stop Words Token Size

Full Text / Inverted Index

ID TOKEN DOCUMENT

1 movie 1,2,3

2 boy 1

3 girl 2

4 going 1

5 starting 2

6 war 1

7 auto-shop 2

8 flowers 3

Token Filters Documents

Tokenizer

Tokenizer

Indexer

Indexer

Page 7: MySQL 5.7 InnoDB 日本語全文検索(その2)

Copyright © 2016, Oracle and/or its affiliates. All rights reserved.

InnoDB全文検索機能の日本語対応

7

Page 8: MySQL 5.7 InnoDB 日本語全文検索(その2)

Copyright © 2016, Oracle and/or its affiliates. All rights reserved.

全文検索機能の日本語対応とは?

•日本語の文章を字句解析して、全文検索用のインデックスを作成できる –英語などは、スペースを区切り文字として字句解析できるが、 日本語には区切り文字が無いため、追加の字句解析機能が必要

8

Page 9: MySQL 5.7 InnoDB 日本語全文検索(その2)

Copyright © 2016, Oracle and/or its affiliates. All rights reserved.

MySQL 5.7でサポートされた日本語の字句解析方法

• N-gram: 一定の文字数で切りだして字句解析する手法 –デフォルトではbi-gram(2文字単位)

• MeCab:オープンソースの形態素解析エンジン –日本語の辞書をベースに字句解析する

9

Page 10: MySQL 5.7 InnoDB 日本語全文検索(その2)

Copyright © 2016, Oracle and/or its affiliates. All rights reserved.

MySQL 5.7での強化点

• N-gramによる日本語、中国語、韓国語サポート –N文字区切りでトークンを検出

10

mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_TABLE ORDER BY doc_id, position LIMIT 10; +--------+--------------+-------------+-----------+--------+----------+ | WORD | FIRST_DOC_ID | LAST_DOC_ID | DOC_COUNT | DOC_ID | POSITION | +--------+--------------+-------------+-----------+--------+----------+ | ロー | 1 | 15 | 2 | 1 | 0 | | ール | 1 | 16 | 3 | 1 | 3 | | ルと | 1 | 1 | 1 | 1 | 6 | | とグ | 1 | 1 | 1 | 1 | 9 | | グル | 1 | 7 | 2 | 1 | 12 | | ルー | 1 | 16 | 3 | 1 | 15 | | ープ | 1 | 7 | 2 | 1 | 18 | | プベ | 1 | 1 | 1 | 1 | 21 | | 環境 | 1 | 1 | 1 | 1 | 21 | | ベー | 1 | 7 | 4 | 1 | 24 | +--------+--------------+-------------+-----------+--------+----------+ 10 rows in set (0.01 sec)c

Page 11: MySQL 5.7 InnoDB 日本語全文検索(その2)

Copyright © 2016, Oracle and/or its affiliates. All rights reserved.

MySQL 5.7での強化点

• MeCabによる日本語サポート –MeCab(オープンソースの日本語辞書)を使ってトークンを検出

11

mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_TABLE ORDER BY doc_id, position LIMIT 10; +--------------------+--------------+-------------+-----------+--------+----------+ | WORD | FIRST_DOC_ID | LAST_DOC_ID | DOC_COUNT | DOC_ID | POSITION | +--------------------+--------------+-------------+-----------+--------+----------+ | ロール | 1 | 1 | 1 | 1 | 0 | | グループ | 1 | 7 | 2 | 1 | 12 | | 環境 | 1 | 1 | 1 | 1 | 21 | | ベース | 1 | 7 | 2 | 1 | 24 | | アクセス | 1 | 1 | 1 | 1 | 36 | | コントロール | 1 | 1 | 1 | 1 | 48 | | により | 1 | 1 | 1 | 1 | 66 | | mysql | 1 | 16 | 12 | 1 | 78 | | dba | 1 | 16 | 4 | 1 | 83 | | きめ細か | 1 | 1 | 1 | 1 | 91 | +--------------------+--------------+-------------+-----------+--------+----------+ 10 rows in set (0.00 sec)

Page 12: MySQL 5.7 InnoDB 日本語全文検索(その2)

Copyright © 2016, Oracle and/or its affiliates. All rights reserved.

その他

• InnoDB日本語全文検索機能の使用方法は、前回の資料参照 –事前準備

–全文検索インデックス作成方法

–転置インデックス確認方法

• MySQL 5.7では、日本語全文検索がお手軽に使用できる

12

Page 13: MySQL 5.7 InnoDB 日本語全文検索(その2)

Copyright © 2016, Oracle and/or its affiliates. All rights reserved.

復習終わり

13

Page 14: MySQL 5.7 InnoDB 日本語全文検索(その2)

Copyright © 2016, Oracle and/or its affiliates. All rights reserved.

全文検索方法

14

Page 15: MySQL 5.7 InnoDB 日本語全文検索(その2)

Copyright © 2016, Oracle and/or its affiliates. All rights reserved.

全文検索関数を使用して検索する

•例

15

SELECT * FROM mecab.articles

WHERE MATCH (description)

AGAINST ('ディスク' IN BOOLEAN MODE)¥G

SELECT * FROM mecab.articles

WHERE MATCH (description)

AGAINST ('+ディスク +トレンド' IN BOOLEAN MODE)¥G

SELECT * FROM mecab.articles

WHERE MATCH (description)

AGAINST ('+ディスク -トレンド' IN BOOLEAN MODE)¥G

Page 16: MySQL 5.7 InnoDB 日本語全文検索(その2)

Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 16

全文検索関数

MATCH (col1,col2,...) AGAINST (expr [search_modifier])

search_modifier:

{

IN NATURAL LANGUAGE MODE

| IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION

| IN BOOLEAN MODE

| WITH QUERY EXPANSION

}

Page 17: MySQL 5.7 InnoDB 日本語全文検索(その2)

Copyright © 2016, Oracle and/or its affiliates. All rights reserved.

全文検索の種類

•自然言語検索 – IN NATURAL LANGUAGE MODE 修飾子を使用

• ブール検索 – IN BOOLEAN MODE 修飾子を使用

–基本的にブール検索を使用する

• クエリー拡張検索 – IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION 修飾子 または WITH QUERY EXPANSION 修飾子 を使用

–自然言語検索を拡張したもの

17

Page 18: MySQL 5.7 InnoDB 日本語全文検索(その2)

Copyright © 2016, Oracle and/or its affiliates. All rights reserved.

全文検索の種類

•自然言語検索 –検索されるテキストは、検索トークンの和集合に変換される

–例(MeCabの場合) • '日本の首都' ⇒ '日本' or 'の' or '首都'

18

mysql> SELECT * FROM articles WHERE MATCH(title)

AGAINST('日本の首都' IN NATURAL LANGUAGE MODE);

+------------+--------------------------------------+

| FTS_DOC_ID | title |

+------------+--------------------------------------+

| 1 | 東京都は日本の首都です | | 2 | 京都と大阪は日本の府です | +------------+--------------------------------------+

2 rows in set (0.00 sec)

「首都」が含まれていないものも検索結果に出てきている

Page 19: MySQL 5.7 InnoDB 日本語全文検索(その2)

Copyright © 2016, Oracle and/or its affiliates. All rights reserved.

全文検索の種類

• ブール検索 –検索されるテキストは、フレーズ検索に変換される

–例(MeCabの場合) • '日本の首都' ⇒ '"日本 の 首都"' ※'日本' ⇒ 'の' ⇒ '首都' の順番に全て一致する文章

19

mysql> SELECT * FROM articles WHERE MATCH(title)

AGAINST('日本の首都' IN BOOLEAN MODE);

+------------+-----------------------------------+

| FTS_DOC_ID | title |

+------------+-----------------------------------+

| 1 | 東京都は日本の首都です | +------------+-----------------------------------+

1 row in set (0.01 sec)

Page 20: MySQL 5.7 InnoDB 日本語全文検索(その2)

Copyright © 2016, Oracle and/or its affiliates. All rights reserved.

ブール検索

•検索文字列の先頭または末尾に指定する文字が特別な意味を持つ

•例) – + : AND

– - : NOT

– [演算子なし] : 暗黙的にOR

– () : 単語をグループ化する

– > : 関連性ランキングへの単語の貢献度をプラスする

– < : 関連性ランキングへの単語の貢献度をマイナスする

– ~ : 関連性ランキングへの単語の貢献度をマイナスする(ノイズ除去)

20

※参考マニュアル 13.9.2 Boolean Full-Text Searches https://dev.mysql.com/doc/refman/5.7/en/fulltext-boolean.html 12.9.2 ブール全文検索 https://dev.mysql.com/doc/refman/5.6/ja/fulltext-boolean.html

Page 21: MySQL 5.7 InnoDB 日本語全文検索(その2)

Copyright © 2016, Oracle and/or its affiliates. All rights reserved.

ブール検索の指定例

• '+監視 +パフォーマンス' – 「監視」と「パフォーマンス」を両方含む

• '+監視 -パフォーマンス' – 「監視」は含むが「パフォーマンス」は含まない

• '監視 パフォーマンス' – 「監視」もしくは「パフォーマンス」のいずれかを含む

• '+監視 +(パフォーマンス クラウド)' – 「監視」を含み、なおかつ「パフォーマンス」もしくは「クラウド」のいずれかを含む

21

Page 22: MySQL 5.7 InnoDB 日本語全文検索(その2)

Copyright © 2016, Oracle and/or its affiliates. All rights reserved.

関連性ランキング

• InnoDBでは TF-IDF のランキングアルゴリズムに基づいて検索ワードと ドキュメントの関連性にランクが付けられる –ドキュメントの中で頻繁に出現する単語は重要 (TF:Term Frequency)

–多くのドキュメントにおいて出現頻度の高い単語は重要では無い (IDF:Inverse Document Frequency)

•全文検索機能を使えば、検索ワードと関連性の強いドキュメントを 簡単に探すことが出来る

22

Page 23: MySQL 5.7 InnoDB 日本語全文検索(その2)

Copyright © 2016, Oracle and/or its affiliates. All rights reserved.

関連性ランキングの確認例

23

Page 24: MySQL 5.7 InnoDB 日本語全文検索(その2)

Copyright © 2016, Oracle and/or its affiliates. All rights reserved.

サンプルテーブル

•サンプルテーブルのテーブル定義 – description列にMeCabパーサーを使用して全文検索インデックスを作成

•サンプルテーブルに格納した文章 –MySQL Enterprise Monitorのページ(※)に記載されている説明文をtitle列、

description列に格納

※https://www-jp.mysql.com/products/enterprise/monitor.html

24

mysql> show create table articles¥G *************************** 1. row *************************** Table: articles Create Table: CREATE TABLE `articles` ( `FTS_DOC_ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(100) DEFAULT NULL, `description` text, PRIMARY KEY (`FTS_DOC_ID`), FULLTEXT KEY `mecab_idx` (`description`) /*!50100 WITH PARSER `mecab` */ ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 1 row in set (0.00 sec)

Page 25: MySQL 5.7 InnoDB 日本語全文検索(その2)

Copyright © 2016, Oracle and/or its affiliates. All rights reserved.

サンプルテーブルに格納した文章

25

※格納した文章の一覧を、資料後半のAppendix部分に掲載しています

Page 26: MySQL 5.7 InnoDB 日本語全文検索(その2)

Copyright © 2016, Oracle and/or its affiliates. All rights reserved.

関連性ランキングのスコアの確認例

•選択リストに全文検索関数を含め、その列でソートする

26

SELECT FTS_DOC_ID, MATCH (description) AGAINST ('<検索ワード>' IN BOOLEAN MODE) AS score FROM articles ORDER BY score DESC;

Page 27: MySQL 5.7 InnoDB 日本語全文検索(その2)

Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 27

IDFにより、レア度が考慮される(「監視」で検索) mysql> SELECT FTS_DOC_ID, MATCH (description) AGAINST ('監視' IN BOOLEAN MODE) -> AS score FROM articles ORDER BY score DESC; +------------+---------------------+ | FTS_DOC_ID | score | +------------+---------------------+ | 3 | 0.07628998160362244 | | 4 | 0.07628998160362244 | | 5 | 0.07628998160362244 | | 6 | 0.07628998160362244 | | 7 | 0.07628998160362244 | | 9 | 0.07628998160362244 | | 11 | 0.07628998160362244 | | 12 | 0.07628998160362244 | | 15 | 0.07628998160362244 | | 1 | 0 | | 2 | 0 | | 8 | 0 | | 10 | 0 | | 13 | 0 | | 14 | 0 | | 16 | 0 | | 17 | 0 | +------------+---------------------+ 17 rows in set (0.00 sec)

Page 28: MySQL 5.7 InnoDB 日本語全文検索(その2)

Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 28

IDFにより、レア度が考慮される(「クラウド」で検索) mysql> SELECT FTS_DOC_ID, MATCH (description) AGAINST ('クラウド' IN BOOLEAN MODE) -> AS score FROM articles ORDER BY score DESC; +------------+-------------------+ | FTS_DOC_ID | score | +------------+-------------------+ | 2 | 1.727639079093933 | | 7 | 1.727639079093933 | | 1 | 0 | | 3 | 0 | | 4 | 0 | | 5 | 0 | | 6 | 0 | | 8 | 0 | | 9 | 0 | | 10 | 0 | | 11 | 0 | | 12 | 0 | | 13 | 0 | | 14 | 0 | | 15 | 0 | | 16 | 0 | | 17 | 0 | +------------+-------------------+ 17 rows in set (0.00 sec)

2つのドキュメントにしか含まれていないため、スコアが高くなる

Page 29: MySQL 5.7 InnoDB 日本語全文検索(その2)

Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 29

TFにより、出現頻度が考慮される(「パフォーマンス」で検索) mysql> SELECT FTS_DOC_ID, MATCH (description) AGAINST ('パフォーマンス' IN BOOLEAN MODE) -> AS score FROM articles ORDER BY score DESC; +------------+---------------------+ | FTS_DOC_ID | score | +------------+---------------------+ | 5 | 0.2288699448108673 | | 11 | 0.15257996320724487 | | 17 | 0.15257996320724487 | | 1 | 0.07628998160362244 | | 8 | 0.07628998160362244 | | 9 | 0.07628998160362244 | | 10 | 0.07628998160362244 | | 12 | 0.07628998160362244 | | 15 | 0.07628998160362244 | | 2 | 0 | | 3 | 0 | | 4 | 0 | | 6 | 0 | | 7 | 0 | | 13 | 0 | | 14 | 0 | | 16 | 0 | +------------+---------------------+ 17 rows in set (0.00 sec)

出現頻度が高いドキュメントはスコアが高くなる

Page 30: MySQL 5.7 InnoDB 日本語全文検索(その2)

Copyright © 2016, Oracle and/or its affiliates. All rights reserved.

TFにより、出現頻度が考慮される(「パフォーマンス」で検索)

30

mysql> SELECT FTS_DOC_ID, description FROM articles WHERE FTS_DOC_ID=5¥G *************************** 1. row *************************** FTS_DOC_ID: 5 description: MySQL Enterprise Monitor は MySQL クエリーとパフォーマンス関連のサーバー指標を継続的に監視します。基準となるパフォーマンスのトレンドから大きな逸脱があった場合にアラートを受信します。また、ベストプラクティス・アドバイザは、パフォーマンスを向上させるための構成やパラメータ設定の変更を提案します。 1 row in set (0.00 sec) mysql> SELECT FTS_DOC_ID, description FROM articles WHERE FTS_DOC_ID=11¥G *************************** 1. row *************************** FTS_DOC_ID: 11 description: MySQL のパフォーマンスに影響を及ぼす重要な InnoDB 指標を監視します。非効率な索引の使用、ロックの問題、InnoDB バッファ・プール の使用に関するアラートを受信して、現在のパフォーマンスや解析されたトレンドに基づいた InnoDB 構成を改善する方法についてのヒントを得ることができます。 1 row in set (0.00 sec) mysql> SELECT FTS_DOC_ID, description FROM articles WHERE FTS_DOC_ID=1¥G *************************** 1. row *************************** FTS_DOC_ID: 1 description: MySQL Enterprise Monitorは、自動的にレプリケーション・トポロジを検出し、パフォーマンス、可用性、マスター/スレーブの状態を表示します。MySQL 5.7にも対応済みで、レプリケーション・ダッシュボードからレプリケーションの各種指標を確認できます。また、トポロジ・ビューにより、レプリケーション・グループやレプリケーション構成、それぞれのノードの状態などを素早く確認できます。単純なレプリケーション構成だけでなく、マルチソース・レプリケーションや、循環型、階層型といった複雑な構成にも対応しています。 1 row in set (0.00 sec)

3回含まれている

2回含まれている

1回含まれている

Page 31: MySQL 5.7 InnoDB 日本語全文検索(その2)

Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31

重みづけの変更例 mysql> SELECT FTS_DOC_ID, MATCH (description) AGAINST ('+パフォーマンス' IN BOOLEAN MODE) -> AS score FROM articles ORDER BY score DESC;

+------------+---------------------+

| FTS_DOC_ID | score |

+------------+---------------------+

| 5 | 0.2288699448108673 |

| 11 | 0.15257996320724487 |

| 17 | 0.15257996320724487 |

| 1 | 0.07628998160362244 |

| 8 | 0.07628998160362244 |

| 9 | 0.07628998160362244 |

| 10 | 0.07628998160362244 |

| 12 | 0.07628998160362244 |

| 15 | 0.07628998160362244 |

| 2 | 0 |

<中略>

| 16 | 0 |

+------------+---------------------+

17 rows in set (0.00 sec)

Page 32: MySQL 5.7 InnoDB 日本語全文検索(その2)

Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 32

重みづけの変更例(「クエリー」を含むドキュメントのスコアを上げる) mysql> SELECT FTS_DOC_ID, MATCH (description)

-> AGAINST ('+パフォーマンス >クエリー' IN BOOLEAN MODE) AS score -> FROM articles ORDER BY score DESC;

+------------+---------------------+

| FTS_DOC_ID | score |

+------------+---------------------+

| 10 | 2.803929090499878 |

| 5 | 2.0926895141601562 |

| 11 | 0.15257996320724487 |

| 17 | 0.15257996320724487 |

| 1 | 0.07628998160362244 |

| 8 | 0.07628998160362244 |

| 9 | 0.07628998160362244 |

| 12 | 0.07628998160362244 |

| 15 | 0.07628998160362244 |

| 2 | 0 |

<中略>

| 16 | 0 |

+------------+---------------------+

17 rows in set (0.00 sec)

「クエリー」が含まれるドキュメントのスコアが上がる

Page 33: MySQL 5.7 InnoDB 日本語全文検索(その2)

Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 33

重みづけの変更例(「クエリー」を含むドキュメントのスコアを上げる) mysql> SELECT FTS_DOC_ID, description FROM articles WHERE FTS_DOC_ID=5¥G

*************************** 1. row ***************************

FTS_DOC_ID: 5

description: MySQL Enterprise Monitor は MySQL クエリーとパフォーマンス関連のサーバー指標を継続的に監視します。基準となるパフォーマンスのトレンドから大きな逸脱があった場合にアラートを受信します。また、ベストプラクティス・アドバイザは、パフォーマンスを向上させるための構成やパラメータ設定の変更を提案します。 1 row in set (0.00 sec)

mysql>

mysql> SELECT FTS_DOC_ID, description FROM articles WHERE FTS_DOC_ID=10¥G

*************************** 1. row ***************************

FTS_DOC_ID: 10

description: 開発者および DBA は、相関グラフを使用して実行時パラメータ(サーバー負荷、スレッド統計、RAM 使用状況など)を、その時点で実行中であったクエリーと比較できます。グラフ上のタイムスライスを強調表示するだけで、もっとも負荷のかかるクエリーを発見し、より大きなパフォーマンス問題の潜在的な原因を特定します。 1 row in set (0.00 sec)

Page 34: MySQL 5.7 InnoDB 日本語全文検索(その2)

Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 34

重みづけの変更例(「ロック」を含むドキュメントのスコアを下げる) mysql> SELECT FTS_DOC_ID, MATCH (description)

-> AGAINST ('+パフォーマンス >クエリー <ロック' IN BOOLEAN MODE) AS score -> FROM articles ORDER BY score DESC;

+------------+----------------------+

| FTS_DOC_ID | score |

+------------+----------------------+

| 10 | 2.803929090499878 |

| 5 | 2.0926895141601562 |

| 17 | 0.15257996320724487 |

| 1 | 0.07628998160362244 |

| 8 | 0.07628998160362244 |

| 9 | 0.07628998160362244 |

| 12 | 0.07628998160362244 |

| 15 | 0.07628998160362244 |

| 11 | 0.016399502754211426 |

| 2 | 0 |

<中略>

| 16 | 0 |

+------------+----------------------+

17 rows in set (0.00 sec)

「ロック」が含まれるドキュメントのスコアが下がる

Page 35: MySQL 5.7 InnoDB 日本語全文検索(その2)

Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 35

重みづけの変更例(「ロック」を含むドキュメントのスコアを下げる) mysql> SELECT FTS_DOC_ID, description FROM articles WHERE FTS_DOC_ID=11¥G

*************************** 1. row ***************************

FTS_DOC_ID: 11

description: MySQL のパフォーマンスに影響を及ぼす重要な InnoDB 指標を監視します。非効率な索引の使用、ロックの問題、InnoDB バッファ・プール の使用に関するアラートを受信して、現在のパフォーマンスや解析されたトレンドに基づいた InnoDB 構成を改善する方法についてのヒントを得ることができます。 1 row in set (0.00 sec)

Page 36: MySQL 5.7 InnoDB 日本語全文検索(その2)

Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 36

「<」と「~」の違い mysql> SELECT FTS_DOC_ID, MATCH (description) AGAINST ('監視 <パフォーマンス' IN BOOLEAN MODE) AS score FROM articles ORDER BY score DESC;

+------------+---------------------+

| FTS_DOC_ID | score |

+------------+---------------------+

| 3 | 0.07628998160362244 |

| 4 | 0.07628998160362244 |

<中略>

| 14 | 0 |

| 16 | 0 |

| 5 | -0.6948400735855103 |

| 11 | -0.7711300253868103 |

| 9 | -0.8474199771881104 |

| 12 | -0.8474199771881104 |

| 15 | -0.8474199771881104 |

| 17 | -0.8474200367927551 |

| 1 | -0.9237099885940552 |

| 8 | -0.9237099885940552 |

| 10 | -0.9237099885940552 |

+------------+---------------------+

17 rows in set (0.00 sec)

Page 37: MySQL 5.7 InnoDB 日本語全文検索(その2)

Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 37

「<」と「~」の違い mysql> SELECT FTS_DOC_ID, MATCH (description) AGAINST ('監視 ~パフォーマンス' IN BOOLEAN MODE) AS score FROM articles ORDER BY score DESC;

+------------+---------------------+

| FTS_DOC_ID | score |

+------------+---------------------+

| 3 | 0.07628998160362244 |

| 4 | 0.07628998160362244 |

<中略>

| 8 | 0 |

| 10 | 0 |

| 13 | 0 |

| 14 | 0 |

| 16 | 0 |

| 17 | 0 |

| 5 | -0.6948400735855103 |

| 11 | -0.7711300253868103 |

| 9 | -0.8474199771881104 |

| 12 | -0.8474199771881104 |

| 15 | -0.8474199771881104 |

+------------+---------------------+

17 rows in set (0.00 sec)

「パフォーマンス」が含まれていても、「監視」が 含まれていないドキュメントのスコアは下がらない

Page 38: MySQL 5.7 InnoDB 日本語全文検索(その2)

Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 38

「<」と「~」の違い mysql> SELECT FTS_DOC_ID, description FROM articles WHERE FTS_DOC_ID=12¥G

*************************** 1. row ***************************

FTS_DOC_ID: 12

description: パフォーマンスと可用性に影響を及ぼす重要な MySQL Cluster 指標を監視します。グラフを通じて履歴情報を確認し、データ・ノードのキャッシュ・ヒット率が低い、データ・メモリが枯渇しそうである、ノード障害が発生しそうであるといった潜在的な問題に関するアラートを受信できます。 1 row in set (0.00 sec)

mysql>

mysql> SELECT FTS_DOC_ID, description FROM articles WHERE FTS_DOC_ID=10¥G

*************************** 1. row ***************************

FTS_DOC_ID: 10

description: 開発者および DBA は、相関グラフを使用して実行時パラメータ(サーバー負荷、スレッド統計、RAM 使用状況など)を、その時点で実行中であったクエリーと比較できます。グラフ上のタイムスライスを強調表示するだけで、もっとも負荷のかかるクエリーを発見し、より大きなパフォーマンス問題の潜在的な原因を特定します。 1 row in set (0.00 sec)

Page 39: MySQL 5.7 InnoDB 日本語全文検索(その2)

Copyright © 2016, Oracle and/or its affiliates. All rights reserved.

Appendix

39

Page 40: MySQL 5.7 InnoDB 日本語全文検索(その2)

Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 40

サンプルテーブルに格納した文章 mysql> SELECT * FROM mecab.articles¥G

*************************** 1. row ***************************

FTS_DOC_ID: 1

title: レプリケーション・ダッシュボード description: MySQL Enterprise Monitorは、自動的にレプリケーション・トポロジを検出し、パフォーマンス、可用性、マスター/スレーブの状態を表示します。MySQL 5.7にも対応済みで、レプリケーション・ダッシュボードからレプリケーションの各種指標を確認できます。また、トポロジ・ビューにより、レプリケーション・グループやレプリケーション構成、それぞれのノードの状態などを素早く確認できます。単純なレプリケーション構成だけでなく、マルチソース・レプリケーションや、循環型、階層型といった複雑な構成にも対応しています。 *************************** 2. row ***************************

FTS_DOC_ID: 2

title: アクセス制御リスト (ACLs) description: ロールとグループベースのアクセスコントロールにより、MySQL DBA にきめ細かなセキュリティポリシーを定義するための簡単な方法を提供します。アクセス制御リストは、MySQL Enterprise Monitor をマルチテナント環境やクラウド環境で使用している場合のアカウント管理を簡素化します。 *************************** 3. row ***************************

FTS_DOC_ID: 3

title: MySQL Enterprise Firewall 監視

description: グラフとレポートから MySQL Enterprise Firewall のアクティビティを容易に監視でき、MySQL Server を特定のデータベース攻撃から守ることに役立ちます。ベスト・プラクティス・アドバイザーは、潜在的なセキュリティの脅威を検知した時に警告を通知し、MySQL Enterprise Firewall や関連するセキュリティ設定の変更を推奨します。

Page 41: MySQL 5.7 InnoDB 日本語全文検索(その2)

Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 41

サンプルテーブルに格納した文章 *************************** 4. row ***************************

FTS_DOC_ID: 4

title: MySQL Enterprise Audit 監視

description: 全てのMySQLサーバーにわたって、MySQL Enterprise Audit の状況を監視します。ベスト・プラクティス・アドバイザーは、HIPAA、SOX 法、および PCI データセキュリティ基準などの一般的なセキュリティポリシーにおいて、企業の法令遵守を支援します。 *************************** 5. row ***************************

FTS_DOC_ID: 5

title: MySQL パフォーマンスのリアルタイム監視およびアラート生成

description: MySQL Enterprise Monitor は MySQL クエリーとパフォーマンス関連のサーバー指標を継続的に監視します。基準となるパフォーマンスのトレンドから大きな逸脱があった場合にアラートを受信します。また、ベストプラクティス・アドバイザは、パフォーマンスを向上させるための構成やパラメータ設定の変更を提案します。 *************************** 6. row ***************************

FTS_DOC_ID: 6

title: MySQL の可用性に関するリアルタイム監視

description: 開発者および DBA は、データベース可用性の監視と測定によって、品質保証契約 (SLA) のコミットメントを満たしているかを把握できます。 *************************** 7. row ***************************

FTS_DOC_ID: 7

title: クラウドにおける MySQL のリモート監視

description: クラウドおよび VM に対応した設計になっており、リモート・エージェントを必要とせずに、MySQL サーバーをリモートで監視できます。

Page 42: MySQL 5.7 InnoDB 日本語全文検索(その2)

Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 42

サンプルテーブルに格納した文章 *************************** 8. row ***************************

FTS_DOC_ID: 8

title: すべての MySQL サーバーを視覚的に管理

description: Visual Dashboard は Web ベースのインタフェースで、データベースのパフォーマンス、可用性、重大イベントなどを全体的に詳しく確認できます。1台のサーバー、カスタム・グループ、またはすべてのサーバーを視覚的に調べます。リアルタイム情報や履歴情報の豊富なグラフを使用して、サーバー統計の詳細情報にまでドリルダウンできます。 *************************** 9. row ***************************

FTS_DOC_ID: 9

title: 視覚的にクエリーを解析

description: クエリー・パフォーマンスのリアルタイム監視、実行時統計の確認、遅延の原因になっている SQL コードのフィルタリングと特定が可能です。 MySQL Server 5.6 のパフォーマンス・スキーマを使用すれば、ソフトウェアや構成を追加することなく、データが MySQL サーバーから直接収集されます。 *************************** 10. row ***************************

FTS_DOC_ID: 10

title: 負荷の大きいクエリーの発見と修正

description: 開発者および DBA は、相関グラフを使用して実行時パラメータ(サーバー負荷、スレッド統計、RAM 使用状況など)を、その時点で実行中であったクエリーと比較できます。グラフ上のタイムスライスを強調表示するだけで、もっとも負荷のかかるクエリーを発見し、より大きなパフォーマンス問題の潜在的な原因を特定します。

Page 43: MySQL 5.7 InnoDB 日本語全文検索(その2)

Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 43

サンプルテーブルに格納した文章 *************************** 11. row ***************************

FTS_DOC_ID: 11

title: InnoDB の監視

description: MySQL のパフォーマンスに影響を及ぼす重要な InnoDB 指標を監視します。非効率な索引の使用、ロックの問題、InnoDB バッファ・プール の使用に関するアラートを受信して、現在のパフォーマンスや解析されたトレンドに基づいた InnoDB 構成を改善する方法についてのヒントを得ることができます。 *************************** 12. row ***************************

FTS_DOC_ID: 12

title: MySQL Cluster の監視

description: パフォーマンスと可用性に影響を及ぼす重要な MySQL Cluster 指標を監視します。グラフを通じて履歴情報を確認し、データ・ノードのキャッシュ・ヒット率が低い、データ・メモリが枯渇しそうである、ノード障害が発生しそうであるといった潜在的な問題に関するアラートを受信できます。 *************************** 13. row ***************************

FTS_DOC_ID: 13

title: バックアップの監視

description: MySQL ベストプラクティス・アドバイザは、オンライン・ホット・バックアップが想定どおり実行することを支援し、"前回の全体バックアップは古すぎるか?"、"増分バックアップは実行中か?"、"前回のバックアップ・ジョブは成功したか?"、"バックアップのロックの時間が長すぎるか?"などの疑問に回答します。

Page 44: MySQL 5.7 InnoDB 日本語全文検索(その2)

Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 44

サンプルテーブルに格納した文章 *************************** 14. row ***************************

FTS_DOC_ID: 14

title: ディスクの監視

description: トレンドの解析と計画によって、今後必要になる容量を管理者が予測できるようにします。MySQL Enterprise Monitor は、"ディスク領域が12か月後に一杯になる場合に通知する"といったユーザーが定義したしきい値に基づいて、運用スタッフに予防的なアラートを送信します。 *************************** 15. row ***************************

FTS_DOC_ID: 15

title: オペレーティング・システムの監視

description: ロードアベレージ、CPU 使用状況、RAM 使用状況、スワップ使用状況、ファイルシステム使用状況、ディスク I/O など、オペレーティング・システムレベルのパフォーマンス指標を視覚的にリアルタイムで監視します。 *************************** 16. row ***************************

FTS_DOC_ID: 16

title: セキュリティ上のぜい弱性の特定

description: MySQL Enterprise Monitor は MySQL サーバーを保護し、開発者と DBA がセキュリティ・ホールを発見し、それに対応するための支援をします。アドバイザによって、 MySQL のセキュリティに関するベストプラクティスを実施するために設計された一連のルールが提供され、潜在的なぜい弱性がシステムに影響を及ぼす前にアラートを送信します。 *************************** 17. row ***************************

FTS_DOC_ID: 17

title: 開発中およびテスト中のチューニングを迅速化

description: 開発中およびテスト中のパフォーマンスに関する問題を発見するまでにかかる時間を大幅に短縮することで、アプリケーションをより迅速に本番運用できます。ユーザーよりも先にパフォーマンスの問題を特定して修正できます。 17 rows in set (0.00 sec)

Page 45: MySQL 5.7 InnoDB 日本語全文検索(その2)

Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 45

Page 46: MySQL 5.7 InnoDB 日本語全文検索(その2)