激しくgoogle作成中
超速でgoogleを作成中。なんかあれ作ったりこれ作ったりで最近取り留めがなくなっている感じも否めないが。
それについてとりあえず現状の記録しとく。
現状まだクローラしか手がついていないが、、、
環境
- ハードウェア
- M/B: Gigabyte GA-G33M-DS2R
- CPU: Core 2 Duo E6600 2.4GHz
- Memory: DDR2 1GB ×2 (合計2GB)
- HDD: 250GBぐらいの、MaxtorのSATAのやつ
- 主要ソフトウェア
- Gentoo Linux 2008.0 (x86)
- PostgreSQL 8.3(from gentoo portage ~x86)
- 開発環境
- Python 2.5
- PyGreSQL
- PycURL
第一試作品
単純に、
- 巡回予約リストから一つ選ぶ
- Webページにアクセスしそのリンクを抽出
- 抽出したリンクを巡回予約リストに追加
- 1秒待つ
- 1から繰り返し
と言う感じのルーチン。単純に巡回しているだけ。しかも時間かかる。そして単プロセス単スレッドで動かして居るので効率悪すぎ。
当然ながら、時間収集率は86400件/day以下。
第二試作品
第一試作品から、なんとか並列化したもの。
基本的には、
- 予約リストから、以下の条件のリクエスト500件を取り出す
- リクエストがロックされて居ない
- リクエストの対象ホストがロックされていない
- リクエストの対象ホストが過去10秒間にアクセスされていない
- 対象となるホスト名が重複しているリクエストを取り除く
- 対象となるリクエストをすべてロック
- 対象となるホストをすべてロック
- 順次アクセスしてDBに保存
- 保存されたものをパースして、情報を分離
- リンクを列挙して、予約リストに保存
- 1から繰り返し
このプロセスを10個ぐらい並列で行う。
が、右上のグラフ見て分かるように、あるところで性能がさがる。対象リクエストを取り出すところがネックになっている。DBの使い方とか、DBMS自体がややネックになっている。理想的には、ほぼ定数時間かかることがベストなんだけど。。。
ということで現在ここを改善中。。。
方向性
Wikipediaとか調べると、「検索エンジン」ページの「黎明期」の欄には
日本のインターネット普及初期から存在した検索エンジンには以下のようなものがある。黎明期には、豊橋技術科学大学の学生が作成したYahhoや、東京大学の学生が作成したODiN、早稲田大学の学生が作成した千里眼など、個人の学生が作成したものが商用に対して先行していた(いずれも1995年に作成、NTT DIRCECTORYは1994年に作成)。これらは、単に実験用に公開されていただけでなく、多くの人に用いられていたものであって、黎明期のユーザにとっては、知名度、実用度ともに高いものであった。またMondouなどのように研究室(京都大学)で作成したものもあった。
とか書いてあった。まぁ良い時代だったもんだ。
この創作を始めたのは、「googleぐらいだったら作れそうじゃね?」というバカな考えの元、真っ正面からそれに挑んでどの程度それが不可能であるのか、あるいはそんな部分で不可能なのかという事を知りたいという事でした。
あるいは逆の考え方として、現在では、個人レベルでどの程度の検索エンジンが作れるかというのも試してみたいとは思っています。
それ以外にも、つまり検索以外にも、何かおもしろいことが出来ないか模索しています。個人的には、ネットワーク関係(includes ニューラルネット)とか、自然言語処理、あとはセマンティックweb的な部分に興味があったり。
あ、そうそう、前授業で、セマンティック HTML/XHTMLっていう本(Amazonへのリンク)が新しく出て、これはいいよとか言ってたな。
かってみようかな。