Groonga導入事例−地域コミュニティサイトLOHABUU

1,217 views

Published on

地域コミュニティサービス「LOHABUU」におけるGroongaの導入事例

Published in: Engineering
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,217
On SlideShare
0
From Embeds
0
Number of Embeds
63
Actions
Shares
0
Downloads
3
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Groonga導入事例−地域コミュニティサイトLOHABUU

  1. 1. -‐‑‒Groonga導⼊入事例例-‐‑‒   地域コミュニティサイト   LOHABUU 株式会社アンタス  紀國  聡(きのくに  さとし)
  2. 2. ⾃自⼰己紹介 • 紀國  聡(きのくにさとし) • 株式会社アンタス
 ITソリューション部部⻑⾧長   • ITシステム企画設計   • ビジネスIT活⽤用⽀支援
 • 札幌オオドオリ⼤大学  
 ドリ農部部⻑⾧長   • 農作業を通した⼈人材交流流   • 街の⼋八百屋紹介フリーペー パー制作
  3. 3. http://lohabuu.net/
  4. 4. LOHABUU!!(ろはぶー) • ”local”と”hub”を合わせた造語。
 地域の⼈人や情報をつなぐハブとな るサービスになるよう命名。   • みんなのブログやつぶやきをリア ルタイムに集めて表⽰示。   • いま何が盛り上がっているかがわ かる。   • その時の気持ちが共有できる。   • 特定のキーワード毎にまとめて表 ⽰示するとより⾯面⽩白い。
  5. 5. コンセプト 地域の⼈人たちが⽇日々のくらしを気軽に投稿   それらを集めて特定の切切り⼝口で編集   地域の⾃自然・⾷食・くらしの魅⼒力力発信し、ブランド化 ! ! ! !
  6. 6. つまり
  7. 7. 収集した⼤大量量データの中から   ⾃自由なキーワードで   コンテンツを抽出するサービス
  8. 8. あゆみ 2010年年10⽉月         開発スタート   2010年年12⽉月         稚内、別海オープン   2011年年               函館、⼩小樽、札幌       速度度チューニング   2012年年       ⼗十勝、釧路路、網⾛走、根室       位置情報対応
  9. 9. しくみ • Twitter、Youtube等のCGM コンテンツをAPIで取得
 (毎分)   ! • 取得したコンテンツをMySQL とGroongaに登録   ! • 任意の切切り⼝口(条件)で
 コンテンツを検索索して表⽰示
  10. 10. なやみ Rroonga ruby rails  3.0 refinay  CMS 同じコンテンツを   保持 クロールコンテンツ 登録・CMSでの編集 インデクス   作成 全⽂文検索索でidのみ を取得Groongaで検索索したid を⽤用いてid指定検索索 id MySQLとGroongaのデータ⼆二重持ち
  11. 11. Mroongaも検討 MySQLとGroongaの⼆二重持ちが不不要とな り、とっても幸せになれたはず。   当時(2010年年12⽉月)のMroongaは
 Auto  Incrementに対応しておらず断念念。。
  12. 12. 本当はMroongaを使いたかった。 MySQLとGroongaの⼆二重持ちが不不要と なり、とっても幸せになれたはず。   当時(2010年年12⽉月)のMroongaはAuto   Incrementに対応しておらず断念念。。 当時のRedmineに記された残念念な声
  13. 13. ActiveGroonga 当時はRails3.0に対応していなかったので
 断念念。   2010年年11⽉月末には対応したようなので、
 わずかの差だった。。
  14. 14. パフォーマンス⽐比較 MySQL mysql> select * from cgms -> where body like '%sapporo%' -> order by orig_updated_at desc limit 10; ・・・ 10 rows in set (49.15 sec) ! Rroonga > def search_sapporo > t_start = Time.now.instance_eval { self.to_i * 1000 + (usec/1000) } > cgms = ::GroongaSearchEngine.search('sapporo') > t_end = Time.now.instance_eval { self.to_i * 1000 + (usec/1000) } > puts t_end - t_start > end > search_sapporo 1055 (≒1.06sec) LOHABUU札幌のCGMテーブル (176万件)の検索速度比較
  15. 15. ハマったことなど Groongaでの検索索結果が必ずしも指定キーワードが含 まれていないことがあった。     →  仕⽅方ないので、検索索してから正規表現で
       マッチングした。   ! 表⽰示速度度チューニングのため、Groongaのインデック スを追加すると、検索索漏漏れなどが発⽣生した。     →  検索索に影響ない範囲でインデクスを削除  
  16. 16. ハマったことなど Groongaに登録してインデクス作成しても、何故か
 検索索されないケースがみられた。     →  Groongaのキャッシュが原因?       →  cache=noで検索索するようにすると、
       検索索結果はよくなったが、ページ表⽰示時の
       CPU負荷が⾼高くなってしまった。。  
  17. 17. ハマったことなど GroongaのDBは作成した時のパスを覚えてる!?     →  テスト⽤用にファイルを移動・リネームすると
       検索索結果が返ってこなくてハマった。   ! Rroongaのお作法に従う余裕がなかった。     →  意図した検索索結果の確認は直接Groongaを
       叩いていたため、Rroongaに翻訳するよりも、
       確認結果を⽂文字列列した⽅方が楽だった。
  18. 18. テーブル構造 Entry ! table_id : unsigned integer title : text body : text type : text orig_updated_at: time ・・・・ location :wgs84_geo_point ・・・ N-‐‑‒gram   インデックス Geo   インデックス Time   インデックス
  19. 19. 補⾜足   利利⽤用例例や裏裏側など
  20. 20. 管理理画⾯面
  21. 21. 収集設定
  22. 22. /groonga?query=betsukai+OR+bekkai 検索索メニュー設定
  23. 23. 活⽤用事例例
  24. 24. フォトコンテスト 街中に仕込んだARオブジェクトを探して撮影。   TwitPicに投稿してプロジェクターに写したLOHABUUで   みんなで鑑賞&表彰式。
  25. 25. ジャンボホタテ祭り お祭り会場に⼤大型テレビを持ち込んでLOHABUU表⽰示。   祭りのハッシュタグつけてTwitter投稿するとリアルタイム 表⽰示してイベント盛り上げ。
  26. 26. ランキングAPI 「Traveler北北海道」との連携規格。その場所でつぶやかれた情報をLOHABUUの 「いいね!」数をもとにランキング算出し、APIで提供。 Traveler北北海道
  27. 27. ご静聴   ありがとうございました。 http://lohabuu.net/

×