6
ヒウィッヒ・ドットコム とgroonga groonga + mroonga + Scala + Pythonで作る Twitter検索サービス http://hiwihhi.com 書いた人 @shimariso 1

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

Embed Size (px)

Citation preview

Page 1: groongaとScalaとPythonで作る Twitter検索 - ヒウィッヒ・ドットコム

ヒウィッヒ・ドットコムとgroonga

groonga + mroonga + Scala + Pythonで作るTwitter検索サービスhttp://hiwihhi.com

書いた人 @shimariso

1

Page 2: groongaとScalaとPythonで作る Twitter検索 - ヒウィッヒ・ドットコム

ヒウィッヒ・ドットコムとは

• 「高密度」Twitter検索サービス• フォロワー数やFav/RT数等と無関係な、ある基準を満たすユーザー又はツイートのみ検索対象

• 発言者の「客観的な」プロフィールを常に表示• ツイート表示ページに「前後の発言」を10件ずつ一緒に表示するため、コンテキストの連続したツイートも簡単に追跡

2

Page 3: groongaとScalaとPythonで作る Twitter検索 - ヒウィッヒ・ドットコム

元々は・・・• 任意のツイートに2ch風コメントを付けるという思いつきで作ったサービスだった

• 以前にsennaを使ったことがあるので、試しに groongaでツイート検索機能を実装したらそっちのほうが便利だった(但しユーザーにはアピールせず、数年間に渡って隠し機能扱い)

• 肝心のコメント機能にはほぼスパムしか来ず、他に来る物と言えば内容証明(ほんとうです)

しょうがないので

検索サービスってことにしてリニューアルしました。

もうどうにでもなーれ。

3

Page 4: groongaとScalaとPythonで作る Twitter検索 - ヒウィッヒ・ドットコム

アーキテクチャ※クラウドでも分散でもビッグデータでもないので意識高いエンジニアの皆さんは見る必要ないです。

MySQLmroonga

groonga groongaデータストア

InnoDBMyISAM

全文検索の必要ないテーブル

全文検索「も」したいテーブル

Tomcat

JDBC

Spring Framework/Spring MVC

REST API(Scalaで実装)

jackson / jackson-module-scala

(Java/ScalaオブジェクトとJSONの

相互自動変換)

SQL

groonga HTTPサービス

10041/tcpapplication/json

Apache

mod_wsgi

Webフロントエンド(Pythonで実装)

python-asynchttp(非同期HTTPクライアント)

8080/tcpapplication/json

Flask

80/tcptext/html

管理コマンド群/クローラ(Pythonで実装)

ユーザー

https://pypi.python.org/pypi/twitter(Python用Twitter APIフロントエンド)

4

Page 5: groongaとScalaとPythonで作る Twitter検索 - ヒウィッヒ・ドットコム

誰得www本当に聞かれたら書きます。

• どうして SQLとHTTPの両方を使って groongaにアクセスするの?

• どうしてScalaなのに Springなの?

• ていうかJava系ならLucene使ったほうがよくない?なんで groonga?

• REST APIの呼び出しに非同期HTTPを使うわけは?

• わざわざ APIとフロントエンドを分けて別々の言語で実装してるのはどうして?

• その他 groongaで実際にモノを作ってて起こったことなどkwsk

5

Page 6: groongaとScalaとPythonで作る Twitter検索 - ヒウィッヒ・ドットコム

おわり

6