検索エンジンは「使う」よりも「作る」ほうがおもしろい!

GoogleやYahoo!の裏側にはどのような仕組みがあるのか

GoogleやYahoo!などを使わない日はないくらい、検索エンジンは私たちに欠かせない存在となりました。しかし、そんな身近な検索エンジンがどのような仕組みになっているか、ご存知の方はあまりいらっしゃらないのではないでしょうか。

わざわざ検索エンジンを使うのは、膨大な量の文書に対して、特定の文字列が含まれているか知りたいからです。その時、すべての文書を検索しようとすると、データの量に比例して検索時間も増えてしまうという問題が起こります。でも、GoogleやYahoo!で検索すると、広大なインターネットの情報を見にいっているはずなのに、結果が一瞬で返ってきますよね。なぜかといえば、検索エンジンでは、事前に文書からインデックス(索引)を作成し、そのインデックスを用いて検索することで、文書量が増えても検索速度がそれほど低下しないで済むようにしているからです。インデックスにはさまざまな種類のものがありますが、GoogleやYahoo!をはじめとすると多くの検索エンジンが採用しているのが「転置インデックス」というものです。これは、書籍の索引とまったく同じ論理構造を持ちます。

ソースコードで検索エンジンの仕組みを“体感”できる書籍が登場!

そう書くと、⁠なんだ、単純そうだな」と思うかもしれませんが、もちろんそれだけで検索エンジンが成立するわけではありません。⁠じゃあ、どうやってそのインデックスを作るの?」⁠インデックスを使って検索するにはどうしたらいいの?」など、考えるべきことはいろいろあります。また、理屈はなんとなくわかったとしても、⁠検索エンジン、作ってみてよ」と言われたら、なかなか実現のイメージが湧かないでしょう。まともに稼働させるためには、気をつけるべきことも多々あります。

そこで、実際に検索エンジンを作ることで仕組みを⁠体感⁠しながら学べてしまう書籍が登場しました。それが検索エンジン自作入門です。

最大のポイントは、この本のために、⁠wiser」という検索エンジンを新たに用意したことです。現在、オープンソースの検索エンジンがいくつかありますが、それらは機能が豊富な分、規模、も大きいため、全体の見通しがつきにくくなっています。一方で、wiserはいろいろなことができるわけではありませんが、その分コンパクトで、検索エンジンの全体像を見渡すにはうってつけです。wiserのソースコードを追っていくことで、検索エンジンの原理を深く理解することができるでしょう。

検索エンジンのスペシャリスト2人の共著だからこそ実現した濃い内容

『検索エンジン自作入門』の著者は、Yahoo!Japanの検索エンジン開発チームを経て2008年度上期未踏IT人材発掘・育成事業において高性能分散型検索エンジンの開発によりスーパークリエータに認定された山田浩之さんと、全文検索エンジンSenna/Groongaの開発に携わってきた末永匡さん。原理の解説と全体の構成および監修は企業や大学で検索エンジンの研究開発をしてきた山田さんが担当し、実践および運用におけるポイントは検索エンジンの開発・検索サービスの運用経験が豊富な末永さんが担当することで、理論と実践のバランスがとれた仕上がりになっています。224ページと比較的コンパクトですが、じつは企画から形になるまで5年もの月日がかかっています(編集担当者の怠慢によるところも少なからずあるのですが……⁠⁠。実際にご覧いただくと、中身の濃さを体感していただけるかもしれません。

⁠検索エンジン自作入門』は、紙の書籍はもちろん、Gihyo Digital PublishingやAmazon Kindleで電子書籍版も配信中。ぜひお好みの媒体でご覧になってみてください!