DB

MySQL5.7における全文検索の実装方法について

以前、MySQLのデータベースエンジンであるInnoDBの全文検索を導入するために、MySQL5.6から5.7へバージョンアップしたのですが、InnoDBにおける全文検索は思ったほどのパフォーマンスは得られず、全文検索に特化したMroongaエンジンを利用することにしました。

本記事ではInnoDBおよびMroongaの両方について紹介致します。

※ おすすめはMroongaです。

全文検索とは簡単にイメージを掴んで頂くと、Google検索のようなキーワードによるデータ検索機能です。

例えば、会社でPCを貸与してもらうとき、交通費などの精算を行うときなど、何か所属部署の上長に許可を頂く際は申請書を提出すると思います。ほとんどの会社では紙での申請ではなく、システム上で申請する会社が多いと思います。

このようなシステムにおいては、自分自身が登録した申請書や、自分が承認しなければならない申請書を検索したり、〇〇申請書やXX申請書といった申請書種類で検索したりなど、目的のデータを発見するために検索機能が備わっています。

MySQL5.6から5.7へのアップグレード手順 (全文検索でngramを利用するために)

MySQLで全文検索機能を実装しようとした場合、MySQL5.6以上から日本語の全文検索に対応しています。しかしながら、MySQL5.6ではngram等のパーサに非対応で、FULLTEXTインデックスの利便性が悪いです。検索精度を向上させるためには、FULLTEXTインデックスを付与したカラムに自前で工夫したキーワードを登録する必要があります。 キーワード生成の自前作成をアプリ側でやろうとするとパフォーマンスも悪く、煩雑なデータ登録ロジックになるため、ngramのパーサに対応しているMySQL5.7へバージョンアップすることにしました。 基本的には古いmysqlのライブラリを削除して新しいライブラリをインストールすることでバージョンアップ可能なのですが、依存関係にあるpostfix、crontabも削除されてしまうため注意が必要です。

MariaDB(MySQL)におけるデータベースの作成とユーザ作成および権限付与について

MariaDBとMySQLは姉妹関係にあるRDBMSになります。どちらもアプリケーションで登録するデータを保存するために必要なソフトウェアです。 違いはMySQLをもとにパフォーマンス改善し、後発として誕生したものがMariaDBです。 MariaDBもしくはMySQLをインストールした後はデータベース(DB)の作成と、作成したDBを操作するためのユーザ作成が必要になります。自身でWebアプリケーションを構築する際やWordPress、DrupalといったCMSをインストール際にDBの構築作業は必要になります。 また、MariaDB(MySQL)はレンタルサーバでよく使われています。 レンタルサーバでは大抵管理メニューから簡単にDBの作成ができるようになっておりますが、管理メニュー等の便利機能に頼らずともデータベースの作成やユーザの作成ができるようにしておいたほうが吉です。