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

12
Solr1.3 かか Solr1.4 かかか かかかかかかかか ~~ 株株株株株株株 株株株 株株株株 ・・ 株株 株株

Upload: guest6eecabc

Post on 20-Jun-2015

4.219 views

Category:

Technology


5 download

DESCRIPTION

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

TRANSCRIPT

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

Solr1.3 から Solr1.4 へ移行

~マピオンの場合~

株式会社データ・コム・ナレッジ坂田 敏朗

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

はじめに• 対象者

– エンジニア。ちょっとは Solr かじった。 それ以外の方、「 Apache Solr 入門」を読み

ましょう• なぜ 1.4 にしたいのか?

– いつの間にかサーバが増えてしまった。• クローラー用だとか法人向け用だとか。。。

– 1.4 にすればパフォーマンス上がりそうだし台数減らせるんじゃねぇ?

• 同時アクセスが多い場合のパフォーマンスがいい。

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

パフォーマンス比較

※ 本番と同じ環境を用意できなかったので仮想サーバで比較

緯度経度検索&同時アクセスが多い場合に、顕著に違いが現れる

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

スキーマ• integer フィールドを pint へ変更• 緯度 / 経度フィールドを tdouble へ変更

– 1.3 の時はただの double

• dynamicField : name=“_local*” を追加– lucene-spatial 用

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

Tokenizer

• TokenizerFactory で作った Tokenizer は使いまわすように変更されている。– Factory 側で処理してた部分が 1 回しか呼ば

れなくなったので修正

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

lucene-spatial

• org.apache.lucene.spatial パッケージ• lucene-spatial-2.9.1.jar

• https://locallucene.svn.sourceforge.net/svnroot/locallucene からチェックアウトしたSolr コンポーネントを使用

• 距離はやっぱりマイル。。。– マイル - メートル変換– 日本測地系 - 世界測地系変換

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

solrconfig.xml <updateRequestProcessorChain> <processor class="jp.co.mapion.solr.update.LocalUpdateProcessorFactory"> <str name="latField">lat</str> <str name="lngField">lon</str> <int name="startTier">9</int> <int name="endTier">17</int> </processor> <processor class="solr.RunUpdateProcessorFactory" /> <processor class="solr.LogUpdateProcessorFactory" /> </updateRequestProcessorChain>

<searchComponent name="localsolr" class="jp.co.mapion.solr.component.LocalSolrQueryComponent"> <str name="latField">lat</str> <str name="lngField">lon</str> <str name="tierPrefix">_localTier</str> <str name="distanceField">distance</str></searchComponent>

<requestHandler name="/local" class="org.apache.solr.handler.component.SearchHandler"> <arr name="components"> <str>localsolr</str> <str>facet</str> </arr> <lst name="defaults"> <str name="echoParams">explicit</str> <str name="sort">distance asc</str> </lst></requestHandler>

データ更新

検索用コンポーネント

検索用ハンドラー

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

データ・インポート・ハンドラー

• deltaImportQuery の追加– deltaQuery と一緒に使う

• deltaQuery や deletedPkQuery も transformer が呼ばれる– 要らないと思うんですが。。。

• フィールドの大文字/小文字を区別しなくなった– これ、意外と痛い。。。

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

チューニング• Solr キャッシュを無効化

– 距離を計算した結果を DistanceFilter に一時的に保存しているが、そのために FULL GCじゃないと解放されない。

• Java オプション– メモリーリーク疑惑があったが、結局 Java

オプションだった。。。• Solaris ZFS

– より積極的に使う。

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

制限• ○ 分散検索時のファセットソートができ

ない制限がなくなった

• △ 緯度経度検索で指定できる距離に制限がある– 23950m ( 事実上、それほど問題ではない )

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

どのくらいサーバを削減できたか?

実はまだ移行できてません !!

• メモリーリーク疑惑があって、原因追求に時間がかかった。

• Solr 使っている箇所が多く、検証に時間がかかった。

• 検証の結果、問題もいつくか発見しその対応にも時間がかかった。

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

最後に• なうまぴおん も Solr

使ってます。

http://now.mapion.co.jp/