Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

1,294 views

Published on

任意のツイートに好き勝手コメント出来るサービスとして作ったけど紆余曲折あって検索サービスになってしまったサイトの中身をちょっとバラす。

Published in: Technology
  • Be the first to comment

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

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

×