【作ってみた】書籍「検索エンジン自作入門」を読んで検索エンジン作ってみたリスト

私が山田浩之さんと共著させていただいた「検索エンジン自作入門」は、検索エンジンについて実際のプログラムを参照しながら解説を行った書籍です。

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

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

  • 作者: 山田 浩之
  • 出版社/メーカー: 技術評論社
  • 発売日: 2014-09-25
  • メディア: 単行本(ソフトカバー)
  • Amazon のレビューを見る

そのプログラムは、言語はC言語、データベースはSQLite、データソースはWikipediaを用いています。

読者の方が、自らの得意なプログラミング言語、データベースやデータソースを用いて実際に検索エンジンを書いてくださっているようです。うれしいので、それらを紹介させていただきます!

PHP

PHPはWebエンジニアにとって身近なプログラミング言語です。データソースもTwitterを用いていて、Webエンジニアにとって親しみやすい実装になっています。

Python

Python製のドキュメント生成ツールSphinxのドキュメントをクロールして検索可能とするものです。MongoDBを用いて、トークンごとに、そのトークンが出現するURLのリストを保存しています。

ちなみに、Pythonといえば、Pythonだけで書かれた検索エンジンWhooshというものもあります。

Node.js

RedisのSet型を用いて、複数のトークンを用いた検索が高速に行えるような工夫がされています。Redisは便利な型が多くてうれしいですよね。

Redisは、Sorted Setという型でデータを保存できます。この型も、転置インデックスの保存に適したデータ型です。あるkeyに対して、文字列と数値のペアを要素とするリストを保存することができます。内部では、Skip Listというアルゴリズムを使って、リスト操作の高速化を行っています。

Sorted Setを用いた検索エンジンの例として、Writing a simple keyword search engine using Haskell and Redisのエントリは参考になります。

まとめ & 実装募集中!

「検索エンジン自作入門」を読んで、ぜひぜひ検索エンジンを実際に作ってみましょう! あなたの好きな言語、DBMSで実装しましょう。

作ってみた方は、ぜひ Twitter: @tasukuchan か、検索エンジン自作入門の公式ページのお問い合わせからお知らせいただけるとありがたいです。随時追記させていただきます。