全文検索エンジンはデータベースと何が違うのか

SolrやFASTやオートノミーといった全文検索エンジンMySQLPostgreSQLOracle等のいわゆるRDBMSと比較してなにが違うのか、導入するとどんなメリットがあるのかといったことをよく聞かれます。最初に説明するのは次の3つです。

検索速度があがります

名前の通り全文検索に特化したエンジンなのでRDBと比較して文字列検索性能がムチャクチャ高いです。 LIKE検索を使って文字列検索などをしていて「遅い...」なんて悩んでる方には導入を強くオススメします。
例えばボクが運用しているSolrは、約2億の日本語ブログ記事の中から「Solr」を検索した場合に、0.1秒以内に結果を返してきます。

検索精度があがります

LIKE検索だと「京都」で「東京都」がヒットしたり、「ラーメン」で「レギュラーメンバー」がヒットしたリ、「あびる優」で「注目をあびる優れた若手経営者」がヒットしたりと望んでいない結果がヒットしてしまうことがしばしばあると思います。検索エンジン形態素解析器を組み合わせた方法を使うことでこれらの誤抽出を相当数減らすことができます。

文章の内容を考慮したソーティングができます。

SQLでの検索だと結果は検索式に対して真か偽かのブール値でしか結果がわかりませんが、検索エンジンの場合は検索式に対してどのくらい適合した文章なのかを判断することができます。これによってイイ感じの文章順に並べることができます。このイイ感じのことをレレバンシー(relevancy)というのですが、これはRDBMSにはないものです。Goolgeで有名なPageRankもレレバンシーをあげる技術の一つです。



あとSennaというMySQLPostgreSQLと組み合わせてつかえる検索エンジンがあって、これは両方のイイトコドリをねらっているので中間ということにしておきます。RDBMSとの親和性が高い検索エンジンです。ボクも試用はしています。


ではでは