狠狠撸

狠狠撸Share a Scribd company logo
ヒウィッヒ?ドットコム
とgroonga
groonga + mroonga + Scala + Pythonで作る
Twitter検索サービス
http://hiwihhi.com
書いた人 @shimariso
1
ヒウィッヒ?ドットコム
とは
? 「高密度」Twitter検索サービス
? フォロワー数やFav/RT数等と無関係な、ある基
準を満たすユーザー又はツイートのみ検索対象
? 発言者の「客観的な」プロフィールを常に表示
? ツイート表示ページに「前後の発言」を10件ず
つ一緒に表示するため、コンテキストの連続した
ツイートも簡単に追跡
2
元々は???
? 任意のツイートに2ch風コメントを
付けるという思いつきで作ったサー
ビスだった
? 以前にsennaを使ったことがあるの
で、試しに groongaでツイート検
索機能を実装したらそっちのほうが
便利だった(但しユーザーにはア
ピールせず、数年間に渡って隠し機
能扱い)
? 肝心のコメント機能にはほぼスパム
しか来ず、他に来る物と言えば内容
証明(ほんとうです)
しょうがないので
検索サービスってこ
とにしてリニューア
ルしました。
もうどうにでもなー
れ。
3
アーキテクチャ
※クラウドでも分散でもビッグデータでもないので
意識高いエンジニアの皆さんは見る必要ないです。
MySQL
mroonga
groonga groonga
データストア
InnoDB
MyISAM
全文検索の
必要ないテーブル
全文検索「も」
したいテーブル
Tomcat
JDBC
Spring
Framework/
Spring MVC
REST API
(Scalaで実装)
jackson/jackson-module-scala
(Java/ScalaオブジェクトとJSONの
相互自動変換) SQL
groonga
HTTPサービス
10041/tcp
application/json
Apache
mod_wsgi
Webフロントエンド
(Pythonで実装)
python-asynchttp
(非同期HTTPクライアント)
8080/tcp
application/json
Flask
80/tcp
text/html
管理コマンド群/クローラ
(Pythonで実装)
ユーザー
https://pypi.python.org/pypi/twitter
(Python用Twitter APIフロントエンド)
4
誰得www
本当に聞かれたら書きます。
? どうして SQLとHTTPの両方を使って groongaにアクセスするの?
? どうしてScalaなのに Springなの?
? ていうかJava系ならLucene使ったほうがよくない?なんで
groonga?
? REST APIの呼び出しに非同期HTTPを使うわけは?
? わざわざ APIとフロントエンドを分けて別々の言語で実装してるのは
どうして?
? その他 groongaで実際にモノを作ってて起こったことなどkwsk
5
おわり
6

More Related Content

groongaとScalaとPythonで作る Twitter検索 - ヒウィッヒ?ドットコム