Caffè Latte

日々を徒然に

スポンサーリンク

学内の検索エンジンを作ろうとした話

スポンサーリンク

学内の検索エンジンを作ろうとした話

なつめんと一緒に開発しました。

学内の授業ページや、課題のページを探すのがだるかったため、検索エンジンを作ろうとしていました。

作ろうとしていましたというのは、結局完成しなかったというか、学祭に出すために作っていたのですが学祭スタート5分前にクローラーを走らせたら予期せぬところでバグってちゃんと動かなかったからです。

そのバグったリポジトリはこちら

nozo-moto/search_engine

なぜ作ろうと思ったのか

元々は会津大学前期の課外プロジェクトで、tenntennさんが講義を開いていて、そこに参加した時に作ったものでした。その講義ではGo言語で何かを作ろうと言ったのもので、Go言語を教わりつつものを作って発表をしました。その時も結局ちゃんと開発は終わらなかったです。確か前日徹夜して作っていました。

その時のリポジトリはこちら

aizu-go-kapro/web-int-searcher

9月末、僕のインターンが全て終わったその夜に唐突にこのことを思い出して、学祭に出したいと思い作り始めました。学祭は10/6からだったので一週間でいけるだろと思っていました。

どうやって作ったのか

検索エンジン自作入門 ↑の本を参考にしました。

最初は作り方を知らなかったので、検索エンジン自作入門を読んでいました。この本は検索エンジンの検索アルゴリズムについてよく書いてある本で、サンプルコードの通りに実装すれば割といけそうな感じでした。

課外プロジェクトの時は、この本の中で書いてあった通りにインデックス構築機、インデックス管理機(確か)を実装して、クローラを書いたりしていました。 その時の構成はGo, MongoDB, VueJSでした。 インデックス構築機やインデックス管理機を実装する際に、key-valueで値を保っておいきたくNoSQLが最適だ!と思って使用していました。

学祭前の時は、検索周りを自作せず、MySQL5.7.6以上で使えるInnoDB全文検索を使いました。 参考リンク これを知ったのは、VOYAGE GROUPさんのTreasureインターンに参加しているときに、suzukenさんに教えていただきました :bow:

この時の構成は Go, MySQL, VueJSです。

検索アルゴリズムをDBに任せることで、とても実装がスムーズに進んだかなと思います。

クローラーはどう作るのが正解かわからなかったので、完全に雰囲気で書いていて、やばいコードが散見しています。今回バグを産んだのもここでした。

やっていることは、再帰的に学内のリンクを辿って言って、テキストやタイトルを取得してくるみたいなことを書いていました。

作ってみて

ちゃんと設計しなきゃなと思った、クローラがバグを起こしたのは、テストが足りなかったせいだったり、Goの標準機能であるものを知らなかったせいなので、もっと知識、技術をつけたいと思う

難しかったところ

再帰を書いてごにょごにょするのを綺麗に書くのがとても苦手なのでかけるようになりたい

諸々の感想

これからも頑張ります。

スポンサーリンク