• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
第2回Solr勉強会 マピオン事例
 

第2回Solr勉強会 マピオン事例

on

  • 5,009 views

第2回Solr勉強会 マピオンの資料です。

第2回Solr勉強会 マピオンの資料です。

Statistics

Views

Total Views
5,009
Views on SlideShare
4,157
Embed Views
852

Actions

Likes
2
Downloads
21
Comments
0

6 Embeds 852

http://labs.mapion.co.jp 797
http://blog.mapion.co.jp 23
http://www.slideshare.net 13
http://webcache.googleusercontent.com 12
http://localhost 6
http://translate.googleusercontent.com 1

Accessibility

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    第2回Solr勉強会 マピオン事例 第2回Solr勉強会 マピオン事例 Presentation Transcript

    • Solr1.3 から Solr1.4 へ移行 ~マピオンの場合~ 株式会社データ・コム・ナレッジ 坂田 敏朗
    • はじめに
      • 対象者
        • エンジニア。ちょっとは Solr かじった。
        •  それ以外の方、「 Apache Solr 入門 」を読みましょう
      • なぜ 1.4 にしたいのか?
        • いつの間にかサーバが増えてしまった。
          • クローラー用だとか法人向け用だとか。。。
        • 1.4 にすればパフォーマンス上がりそうだし台数減らせるんじゃねぇ?
          • 同時アクセスが多い場合のパフォーマンスがいい。
    • パフォーマンス比較 ※ 本番と同じ環境を用意できなかったので仮想サーバで比較 緯度経度検索&同時アクセスが多い場合に、顕著に違いが現れる
    • スキーマ
      • integer フィールドを pint へ変更
      • 緯度 / 経度フィールドを tdouble へ変更
        • 1.3 の時はただの double
      • dynamicField : name=“_local*” を追加
        • lucene-spatial 用
    • Tokenizer
      • TokenizerFactory で作った Tokenizer は使いまわすように変更されている。
        • Factory 側で処理してた部分が 1 回しか呼ばれなくなったので修正
    • lucene-spatial
      • org.apache.lucene.spatial パッケージ
      • lucene-spatial-2.9.1.jar
      • https://locallucene.svn.sourceforge.net/svnroot/locallucene からチェックアウトした Solr コンポーネントを使用
      • 距離はやっぱりマイル。。。
        • マイル - メートル変換
        • 日本測地系 - 世界測地系変換
    • solrconfig.xml <updateRequestProcessorChain> <processor class=&quot;jp.co.mapion.solr.update.LocalUpdateProcessorFactory&quot;> <str name=&quot;latField&quot;>lat</str> <str name=&quot;lngField&quot;>lon</str> <int name=&quot;startTier&quot;>9</int> <int name=&quot;endTier&quot;>17</int> </processor> <processor class=&quot;solr.RunUpdateProcessorFactory&quot; /> <processor class=&quot;solr.LogUpdateProcessorFactory&quot; /> </updateRequestProcessorChain> <searchComponent name=&quot;localsolr&quot; class=&quot;jp.co.mapion.solr.component.LocalSolrQueryComponent&quot;> <str name=&quot;latField&quot;>lat</str> <str name=&quot;lngField&quot;>lon</str> <str name=&quot;tierPrefix&quot;>_localTier</str> <str name=&quot;distanceField&quot;>distance</str> </searchComponent> <requestHandler name=&quot;/local&quot; class=&quot;org.apache.solr.handler.component.SearchHandler&quot;> <arr name=&quot;components&quot;> <str>localsolr</str> <str>facet</str> </arr> <lst name=&quot;defaults&quot;> <str name=&quot;echoParams&quot;>explicit</str> <str name=&quot;sort&quot;>distance asc</str> </lst> </requestHandler> データ更新 検索用コンポーネント 検索用ハンドラー
    • データ・インポート・ハンドラー
      • deltaImportQuery の追加
        • deltaQuery と一緒に使う
      • deltaQuery や deletedPkQuery も transformer が呼ばれる
        • 要らないと思うんですが。。。
      • フィールドの大文字/小文字を区別しなくなった
        • これ、意外と痛い。。。
    • チューニング
      • Solr キャッシュを無効化
        • 距離を計算した結果を DistanceFilter に一時的に保存しているが、そのために FULL GC じゃないと解放されない。
      • Java オプション
        • メモリーリーク疑惑があったが、結局 Java オプションだった。。。
      • Solaris ZFS
        • より積極的に使う。
    • 制限
      • ○ 分散検索時のファセットソートができない制限がなくなった
      • △ 緯度経度検索で指定できる距離に制限がある
        • 23950m (事実上、それほど問題ではない)
    • どのくらいサーバを削減できたか?
      • 実はまだ移行できてません !!
      • メモリーリーク疑惑があって、原因追求に時間がかかった。
      • Solr 使っている箇所が多く、検証に時間がかかった。
      • 検証の結果、問題もいつくか発見しその対応にも時間がかかった。
    • 最後に
      • なうまぴおん も Solr 使ってます。
      • http://now.mapion.co.jp/