groonga勉強会3 生放送でコメント検索してみた

14
rroonga で でででででででででででででで ででで 22/06/07 1

Upload: temitan

Post on 20-Jan-2015

931 views

Category:

Technology


4 download

DESCRIPTION

Try to search listener commetns on broadcasting with rroonga. It's used for groonga benkyokai3.

TRANSCRIPT

Page 1: Groonga勉強会3 生放送でコメント検索してみた

rroonga で生放送コメントを検索してみ

てみた

23/04/10 1

Page 2: Groonga勉強会3 生放送でコメント検索してみた

自己紹介• HN: てみた temita• Twitter: @temitan• 興味 : rroonga,Ruby, Rails, Android• はてダ: http://d.hatena.ne.jp/temita/

↑[ あとで書く ]

23/04/10 2

完全に一致

Page 3: Groonga勉強会3 生放送でコメント検索してみた

ニコ番• ニコニコ生放送のコメントを検索できる• http://niconama.temita.net/

23/04/10 3

Page 4: Groonga勉強会3 生放送でコメント検索してみた

きっかけ• 人力最速地震速報を作ってみたい

– ニコニコ生放送とかは情報はやそう・・– 地震ワードの抽出が必要

→ バズッター的な仕組みがいるかな・・→ コメントを検索できたほうが面白そう→ ニコ番

– プッシュ配信が必要→ アラート通知のような仕組みがいるかな・・→ 通知ツールのほうが面白そう・・→ ニコニコール( Web 生放送通知ツール)

23/04/10 4

地震だ!

震度4はある!

Page 5: Groonga勉強会3 生放送でコメント検索してみた

公式枠検索 VS コメント検索

• 本家にも検索機能あるけど?• 「かわいい」を検索した結果

23/04/10 5

Page 6: Groonga勉強会3 生放送でコメント検索してみた

なぜ rroonga?

• KVS のような簡単な検索エンジンがほしい

• 動的に構築して高速に検索したい• Ruby であれこれ操作したい• rroonga にはチュートリアルがある!

23/04/10 6

Page 7: Groonga勉強会3 生放送でコメント検索してみた

rroonga を選択するときは?

23/04/10 7

• rroonga はサーバ型ではなくて組み込み型– 更新しながら参照にするのに強い

• 参照ロックフリー!

– レプリケーション機能は持っていない• 複数サーバで分散することは考えない方がいい• 使いたいときは mroonga の出番

• select クエリの書き方– クエリのタイミング

• ブロックがループ文で評価されると思っているとはまる• &(AND) と |(OR) の使い方

Page 8: Groonga勉強会3 生放送でコメント検索してみた

システム構成

FetcherFetcher

Fetcher

ruby

Ruby on Rails Ruby

Ruby

23/04/10 8

Groonga file

ニコ生コメントサーバ

passenger

検索専用

参照ロックフリー!コメント収集

Page 9: Groonga勉強会3 生放送でコメント検索してみた

テーブルとか

id Community Live_url Live_title Visit_count Come_count

111 Communities http~coxx 雑談だよ 1 1

222 Communities http~coxx 凸待ち 222 2222

Lives

_key Comments_comment

おっさん

11,22,33,33,55,66,77,88

クルーズ

,99,122,123,124,125,126

live_id community timestamp comment

live Communities “18:56:00 2012” “ クリスマス中止だって”

live Communities “18:56:01 2012” “ クルーズきた”

Comments reference

そのままタグに使える

Terms 自動で登録される

Page 10: Groonga勉強会3 生放送でコメント検索してみた

コメントからキーワードタグ生成

23/04/10 10

• 全部のコメントからタグ生成– Groonga が持っている語彙表から取ってくる

terms = Groonga[“Terms”]terms.each do |record| tags[record.key] = record.Comments_comment if record.key.size > 10end

Page 11: Groonga勉強会3 生放送でコメント検索してみた

Select の書き方

• select でカジュアルに検索• 10 分間の [ おっさん ] コメントを検索す

るoffset_time = 600w = " おっさん "time_before = Time.now - offset_timerecords = comments.select do |record|

(record.comment =~ w) & ( record.timestamp > time_before )endpagenate_records = records.paginate([["_id", :descending]],{:page => 1, :size => 10})

比較は必ず Groonga::RecordExpressionBuilder× (time_before < record.timestamp )○( record.timestamp > time_before )

Page 12: Groonga勉強会3 生放送でコメント検索してみた

使い方の参考にしたもの

23/04/10 12

• 本家チュートリアル– Select の使い方はここでわかる

• ソースコード– ドキュメントにないことはソースコードにある– るりまサーチとドキュメント– rroonga 本体とテストコード

• Mailing Lists– http://lists.sourceforge.jp/mailman/listinfo/groonga-

dev

Page 13: Groonga勉強会3 生放送でコメント検索してみた

まとめ?

• rroonga– rroonga は小規模 ~ 中規模向き– 更新の激しいシステムに使える– Mailing Lists で質問すると幸せになれる

• コメント検索は楽しい

Page 14: Groonga勉強会3 生放送でコメント検索してみた

ご清聴ありがとうございました

23/04/10 14