GREEにおける
              全文検索の歴史


                                          GREE Inc.
               Infrastructure Platform Development
                      Nobutoshi Ogata (@nobu666)
13年3月26日火曜日
about me

              • @nobu666
              • 片隅でくすぶっています
              • 猫とウイスキーとワイン


13年3月26日火曜日
GREEの検索




13年3月26日火曜日
検索の歴史 (1)

              • Senna
               • 2007年とかその辺の話…?
               • 安定稼働しなかった


13年3月26日火曜日
検索の歴史 (1)
              • Tritonn
               • 2009年くらいまで
               • データファイルが壊れる
               • やっぱり安定しない
               • MySQLのバージョンあげたい

13年3月26日火曜日
検索の歴史 (3)

              • Lucene
               • 2012年初頭まで
               • 手動index optimizeとの戦い


13年3月26日火曜日
検索の歴史 (4)

              • Solr
               • イマココ
               • 2012年初頭から


13年3月26日火曜日
Solr化の恩恵

              • ほぼメンテナンスフリー
              • SPoFフリー
              • 全体的な検索速度向上


13年3月26日火曜日
LuceneからSolr3.6へ



13年3月26日火曜日
まずやること



13年3月26日火曜日
まずこれを買うんだ!!


13年3月26日火曜日
いつ買うか?


13年3月26日火曜日
Solr化への前提条件

              • 他プロダクトへ影響を出さない
               • フロントエンドからの呼び出しは
                  互換性を維持する

              • Ease of maintenance

13年3月26日火曜日
後方互換
              • HTTP GETを受けてXMLを返却
               • Lucene+Tomcatで受け付けていた
                クエリをSolr向けに変換

               • Solrの返却するXMLをカスタマイズ
              • Indexing依頼のI/Fも変えない
13年3月26日火曜日
Ease of maintenance


              • すべてのサーバーを冗長化
              • サービス影響なしにindex optimize


13年3月26日火曜日
←WebアプリがQueueへ登録

                                  ←indexerがMasterへ登録
                                   ここで定期的にoptimize

                                  ←クエリの受付、返却

              query translation
                                  ←クエリとレスポンスの変換
                                   クライアントからのクエリ受付




13年3月26日火曜日
簡単に説明

              • 現状7schema
              • サーバー台数40台ちょっと
               • マルチコア使えばもっと詰められる
              • 全部で250qps+ くらい

13年3月26日火曜日
13年3月26日火曜日
13年3月26日火曜日
負荷の傾向
              • 大凡0:00付近に負荷のピーク
              • schemaによってはほとんど
               使われていない

              • Range Query使いまくりなので
               slaveが一番重くなる


13年3月26日火曜日
作りこみが必要だった部分(1)



              • Indexer
               • Masterへ分散してIndexing
               • マルチスレッドで効率的に


13年3月26日火曜日
作りこみが必要だった部分(2)

              •   Query Translation

                  •   負の遺産の継承

                  •   Schema毎の特殊なフィルタ付与

                  •   青少年保護なんちゃらけ

                      •   人力監視との兼ね合い

              •   監視

                  •   Replication, SSH, Ping, Solr Ping
13年3月26日火曜日
今でも面倒なこと

              • スキーマ変更を無停止でやるの
               すごいめんどい

              • SlaveをMasterに昇格する、などの
               操作は手動で設定ファイルをいじる



13年3月26日火曜日
検索のこれから



13年3月26日火曜日
改善したいとこ
              • 精度
               • 日本語以外でも使われるので
                辞書を使う&メンテするのが
                事実上難しい

              • さらなる自動化

13年3月26日火曜日
試したいこと

              • Amazonのサービスじゃないことで
               おなじみのElasticSearch

              • Solr Cloud
               • これもっと前にあったら俺は
                こんなに頑張らなくて良かった説



13年3月26日火曜日
Any Questions?



13年3月26日火曜日
Join us!
              http://jobs.gree.net/
13年3月26日火曜日

Solr勉強会第10回