Solr勉強会に参加してきました

最近導入事例が増えてきて注目度が高まっている(気がする)Apache Solrという全文検索エンジンがあります。前職では導入していたのですがあまりよく分かっていなかったので、ちゃんと勉強してみようと第3回Solr勉強会というのに参加してみました。すごく面白かったので忘れないうちにメモメモしときます。

メモの量が偏ってるのは最初の方の発表ほどちゃんとメモしていたためです。後の発表もとても面白かったですよー。

勉強会のアジェンダはこちら http://atnd.org/events/4980

ロンウイット 関口さん

遅刻してしまいほとんど聞けず残念。

サイバーエージェント 田代さん アメブロの検索にSolr1.4を使った話

  • アメーバは元々Javaで書かれたサービス=>Luceneを結構使っていた
  • Solr1.4に移行する前のパフォーマンス
    • データ量6000万件(直近3〜6ヶ月のデータだけしか保持できない)
    • スケールしにくい作り
    • QPS(秒間あたりクエリ数)50くらい
    • しょっちゅう検索不能になる=>社長に怒られたw
  • Solrの分散検索とレプリケーション機能を使いたくてスイッチ
  • インフラ構成
  • Solr1.4移行後のパフォーマンス
    • クエリ数 350万〜450万 / day
    • QPS 85〜100 =>まだまだ出そう
    • レスポンス速度 平均30ms
  • 移行後に扱っているデータ量
    • 随時検索用 - 2億記事 20shards
    • アメーバIDでの検索用 - 4億記事 59shards
    • データの増加量 70万記事/day
    • 1shardあたりのデータ量 11〜15GB(6000〜9000万記事)
  • インデックスの更新頻度
    • 4分に1度
  • 日本語解析アルゴリズム
  • 苦労したこと
    • 転送速度(Master<->Slaveのこと??)
    • AutoWarming?で落ちた

感想:こんなにノウハウを惜しみなく公開していいのか!と思うほど素晴らしい内容でした。プレゼン資料公開して欲しいです!

サイバーエージェント 安田さん アメーバなう検索について

  • Solr1.4.1
  • ドキュメント量 3500万(2ヶ月しか保持しない)
  • データサイズ 4.5GB
  • 反映時間は速い(リアルタイム検索しないといけないから)
    • 1〜10secでインデックス更新
  • パーティション 12shards
    • IDの剰余によるハッシュと時間レンジ
  • ストアデータの保持に工夫をしている
    • MessagePackでシリアライズ
      • Javaのserializableより10倍速い
    • 構造化したストアデータにDeflate
    • メリット
      • データ量20%削減できた
      • スキーマの追加が容易になった
  • 死活監視
    • LBHttpSolrServerを参考に自作
    • shardは冗長化
  • 日本語解析ロジック
    • SenTokenizer -> EgdeNgramFilter -> StopFilter
    • 誤検知は1%位は発生する
  • レプリケーションのノウハウ
    • MasterはIOが多く発生する
    • Slaveはメモリをたくさん積む(空きメモリ>1shardのデータサイズ)

感想:こちらもノウハウ満載なプレゼン。ちょうどMessagePackについて調べていたので興味津々
追記:LuceneインデックスのMessagePackで圧縮の元記事はこちらですね。 LuceneのインデックスにStoreするデータをMessagePackで圧縮してみた

マピオン 岩澤さん 前に失敗したSolr1.4化を達成した話

  • Mapionの場合、Solrのキャッシュ機構を使うとFullGC連発
  • IO-Drive?を使うとイイよって言われたけど駄目だった
  • OSにSolarisを使っていたのでZFSのキャッシュ機構をフルに活用
    • ZFSのキャッシュ上限は空きメモリの範囲にしておいたほうがいい
  • 地道なチューニングでレスポンス速度はSolr1.3の時の20倍以上に高速化
  • レスポンス数
    • 1000万クエリ / day
    • 最大400クエリ / sec
  • これを4台のSolrで捌く
    • 1.3の時は16台必要だった
  • 京都府問題

疑問点:マージ用Solrっていったいなんだろう?
補遺:SolrのキャッシュについてTwitterで以下のようなフォローが岩澤さんご本人から
"これは一情報+キーワードで同じクエリが少ないことが多いマピオン独特の場合だと思います。他のユーザさんは使ったほうが断然イイみたいですよ。 " http://twitter.com/iwazer/status/18111512921

チームラボ田村さん キーワードレスサーチについて

  • ユーザーは受動的に情報を取得したい
    • キーワードとか最初に分からない場合が多い
  • 文字情報以外も検索したい
  • =>キーワードレスサーチ
  • ジクレポ
  • コレカモ
  • イメージ検索
    • 画像をopenCVで解析し、色や形などの特徴情報を抽出
    • 抽出した情報を数値として保存してしまう
    • 商品の詳細説明文と検索をかけたり

感想:イメージ検索こうやって実装できるんだーと目からウロコ。

LT

  • Basis Technology 黒坂さん「Lucid Imagination 最新動向 (仮題)」
  • ECナビ春山さん Solrを動かすTomcatにメモリを割り当て過ぎたら死んだ話
    • 24GB以上のメモリ割り当てちゃいかんよと