エックスサーバーのPHPモジュール sqlite3, pdo_sqlite を全文検索(FTS)対応に置き換えてみる

Web系でよく使われている全文検索は、Mroonga という MySQL/MariaDB の全文検索用拡張機能があるようですが、なんとなくハードルが高い気がしてもっと小規模で手軽に扱える Sqlite3の全文検索(FTS)を使ってみました

Mroonga でなく、Sqlite にしたのは、特に根拠があるわけではなく Sqlite のほうがいろんな環境で使えるので直感で選んだだけです (^^)

検索すると Android や iOS での sqlite の全文検索情報は少し見つかりましたが、PHPの sqlite3, pdo_splite モジュールの全文検索に関する情報がほとんどありません。

何故ないかというと PHP に組み込まれている sqlite3, pdo_sqlite モジュールが全文検索に対応していない場合がほとんどという背景があると思われます

対応していない場合は、sqlite3, pdo_sqlite モジュールを再コンパイルする必要があるということで、手軽に試せないため使われない。もったいないことです

そこで、今回はエックスサーバーで sqlite3, pdo_sqlite モジュールを全文検索対応版に置き換える方法を紹介します (^^)

FTS対応版モジュールのコンパイル

コンパイルに関しては、前回 Vagrant VAW という仮想マシンを使った手順を紹介していますので、そちらを参照して下さい

sqlite3, pdo_sqlite モジュールの全文検索(FTS)対応コンパイル手順
PHP の sqlite3, pdo_sqlite モジュールの全文検索(FTS)機能を有効化してコンパイルする手順を紹介いたします (^^)
sqlite3, pdo_sqlite モジュールの全文検索(FTS)対応コンパイル手順

※今回はここで作成した php 7.0.4 の sqlite3.so, pdo_sqlite.so を使います

 

エックスサーバーでの作業

PHP情報確認

エックスサーバーのサーバーパネルから対象となるドメインのPHPバージョンを切り替えます

※2016/5/11 現在で最新の 7.0.3 に切り替えました

FTP等でドキュメントルートに phpinfo.php (下記内容)をコピーします

<? PHP phpinfo(); ?>

これで phpinfo.php にアクセスすればPHP情報が分かります

xserver-phpinfo

重要

Configure の所を見ると redhat系linux の x86_64bit OS であることが分かります。従ってVagrant VAW の Cent OS 64bit と互換性があると判断して Vagrant VAWを使って作成した拡張モジュールを使用しました (^^)

ご自身の環境を確認して、redhat系linux の x86_64bit OS でないと思われる場合は、エックスサーバー上でモジュールのソースを取得してコンパイルする必要があるかも知れません

各自確認の上、判断して下さい

 

拡張モジュールの設置

FTPを使って接続してホームディレクトリ下に拡張モジュールのディレクトリを作ります

作成したディレクトリにVagrant VAW 環境で作成した拡張モジュールをコピーします

xserver-extensions-copy

※ディレクトリ構成は自分で管理しやすいように適当に決めています (^^)

php.ini 設定

エックスサーバーのサーバーパネルから php.ini 設定を選択します

参照: php.ini設定について

xserver-phpini-setting

php.ini 直接編集を選択します

xserver-phpini-edit

ここに拡張モジュールのロードを追記します

※画像では、ホームディレクトリが /home/celtislab となっていますが、celtislab の部分はご自身のサーバーIDを記述して下さい

; FTS support pdo_sqlite, sqlite3 extensions
extension="/home/[サーバーID]/local/lib/php/7.0.x/extensions/pdo_sqlite.so"
extension="/home/[サーバーID]/local/lib/php/7.0.x/extensions/sqlite3.so"

追記が終わったら、設定ボタンを押して反映させて下さい

ブラウザで phpinfo.php にアクセスして、pdo_sqlite, sqlite3 モジュールが有効になっていれば反映されているはずです。

pdo_sqlite, sqlite3 が有効になっていなかったり、画面が白くなる等のエラーが発生した場合は、慌てずに php.ini の記述に間違いがないか確認しましょう

終わったら、phpinfo.php ファイルは消しておきましょう

以上

 

今日は、エックスサーバーにFTSに対応した pdo_sqlite の組み込み手順を紹介いたしました

以前作成した WordPressのプラグインを紹介するサービスで使用しているデータベースを MySQL から Sqlite に置き換える作業を現在行っています

その作業で Sqlite の良い所や悪い所も少しわかってきて、用途によって向き不向きもありますが、更新の少ない検索主体の用途ではかなり使えそうという感触です (^^)

まだまだ勉強中でまとまっていませんが、そのへんの記事も少しづつ書いてもっと SQlite を紹介したいと思います (^^)

 


まとめ記事紹介

go-to-top