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

4,615 views

Published on

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

Published in: Technology, News & Politics
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,615
On SlideShare
0
From Embeds
0
Number of Embeds
897
Actions
Shares
0
Downloads
23
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

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

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

×