masayuki5160's diary

名古屋でエンジニアしてます。

全文検索エンジンをPHPでつくってみる

前々から興味はあったんですが、
最近検索エンジンやら機械学習やらで初心者にもわかりやすい本がどどんとでていたので集中して勉強してました。

この辺ですね。

検索エンジン自作入門 ~手を動かしながら見渡す検索の舞台裏

新品価格
¥2,894から
(2017/3/19 14:55時点)

PHPによる機械学習入門

新品価格
¥3,888から
(2017/3/19 14:55時点)

検索エンジン自作入門に関してはC言語があまりあれなぼくにとっては大変でしたが、
じっくり読んでいくとちゃんと理解できます。(ちなみにまだ読んでる途中ですw)
PHPによる機械学習入門は"そっから説明してくれるの!?"、ていうくらい親切な本でした。

あとこれも参考になりました。

[Web開発者のための]大規模サービス技術入門 ―データ構造、メモリ、OS、DB、サーバ/インフラ (WEB DB PRESS plusシリーズ)

新品価格
¥2,399から
(2017/3/19 14:56時点)

全文検索についての章があり参考になります。
ほんとすごいインターンやな、と毎度読み返して思うのは僕だけでしょうかw



で、PHPで全文検索エンジンをつくってみました。
ソースはこちら。


GitHub - masayuki5160/searchTweet: PHPで全文検索エンジンをつくる

いろいろつっこみ頂けるとうれしいです。
ざっくりですが今回作成したのは、

・PHPだけで実装
・DBにはMySQL
・形態素解析(Mecab)を使用
・検索対象ドキュメントはTwitterから取得して転置インデックス作成(クローラー)

という感じです。

PHPによる機械学習入門の著者も言っていましたが、
PHPで実装することによって多くのWebエンジニアにとって距離が近いものになるのは確かだと思います。なので今回はPHPだけで実装することにしました。
あとDBについてもMySQLなのでわかりやすいかなと。


今後改善したいなと思っているのは、

・検索を複数キーワード対応
・転置インデックスの圧縮
・DBをKey-ValueタイプのDBに切り替え

あたり。すぐできそうなものばかりなのでまた時間をつくってやってみます。