レンタルサーバ上で、PHPとMySQLを使用したWebアプリケーションを作ろうと考えています。
このWebアプリケーションに全文検索機能を実装しようと考えたのですが、MySQLのFULLTEXTインデックスには4文字未満の検索語が無視されたり、レンタルサーバにおけるMySQLは共用のため遅いといった問題があります。
また私の調べた範囲では、検索結果でマッチした単語を強調する機能や、検索結果に応じてソートする方法を見つけられませんでした。
一方SQLiteは、ファイルベースであり、またPDO等に拡張として追加されているため処理速度の点は問題ありませんし、以下のサイトを見る限り、検索結果でマッチした単語を強調するsnippet
関数もあるようです。
SQLiteで全文検索 - DiaryException
またSQLiteには、(SQLiteがFTS4に対応している場合に)マッチした情報を返すmatchinfo
関数があり、これを利用することで検索結果に応じてソートすることも可能かもしれません。
(以下のサイトではSQLiteにneozenith/sqlite-okapi-bm25の関数を追加するアプローチを紹介していますが、レンタルサーバでは厳しいため、全ての結果を取得した上でPHPでソート処理を行うつもりです。)
SQLiteで高速全文検索〜日本語編〜 - SSSSLIDE
この事を踏まえ、私はメインのデータベースとしてMySQLを利用しつつ、全文検索の箇所のみSQLite3を利用しようと考えています。
しかし、当然データベースを分けることになるためトランザクションは使えません。
また、SQLiteはファイルベースのため、同時アクセスに弱いという欠点が存在します。
なにより、実際の案件等を処理した経験がなくネット上で情報を集めるしか無い私には、この案が適切なものなのか判断できかねます。
そこで、皆さんに質問です。
MySQLをベースとしたWebアプリケーションに、全文検索用としてSQLite3を利用するというこの案をどう思いますか?
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。