Mapion における Solr 利用状況 Solr 勉強会  2009.7.21 株式会社マピオン 藤本 亜矢子/ 谷本 真紀
どこで使ってる? キーワード検索 ファセット 緯度経度から検索
Solr 導入の経緯 <ul><li>「マピオン電話帳」で MySQL5.0 を採用 </li></ul><ul><li>でも、メチャクチャ負荷高い  (  ̄ o  ̄ ;)   </li></ul><ul><li>パフォーマンスチューニング行う...
統計 <ul><li>クエリー </li></ul><ul><ul><li>1日約100万 (7 月 17 日時点 ) </li></ul></ul><ul><ul><li>範囲検索30%、キーワード検索70% </li></ul></ul><...
データ件数は? <ul><li>電話帳 ・・・  約900万件 ( shards : 30 ) </li></ul><ul><li>ランドマーク ・・・ 約40万件( shards : 4 ) </li></ul><ul><li>住所 ・・・ ...
運用 <ul><li>データ更新 </li></ul><ul><ul><li>電話帳は差分更新 (delta-import) </li></ul></ul><ul><ul><li>1 日 2 回更新 </li></ul></ul><ul><ul...
サーバー構成は? <ul><li>2009 年 7 月 21 日時点 </li></ul>load balancer load balancer 検索用 Solr shards 用 Solr 検索用 Solr 検索用 Solr 検索用 Solr...
Mapion 拡張 その① <ul><li>緯度経度+距離 </li></ul><ul><ul><li>拡張コンポーネント として実装 </li></ul></ul><ul><ul><li>緯度経度は ピクセル座標 も格納 </li></ul>...
Mapion 拡張 その② <ul><li>場所+キーワード </li></ul><ul><ul><li>2BOX 検索で周辺検索 </li></ul></ul><ul><ul><li>q= キーワード &near= 場所 </li></ul>...
Mapion 拡張 その③ <ul><li>住所検索、郵便番号検索 </li></ul><ul><ul><li>住所の番地号データは件数が多すぎるのでそもそも Solr には入れていない(数千万件) </li></ul></ul><ul><ul...
Mapion 拡張 その④ <ul><li>apache-solr-core-1.3.0.jar </li></ul><ul><ul><li>電話帳は当初分割数が 10 程度だったが、パフォーマンス/スケールアウトを考え 30 に分割数を増やし...
最後に <ul><li>Tokenizer </li></ul><ul><ul><li>形態素解析とのハイブリッド方式で精度を上げたい </li></ul></ul><ul><ul><li>一緒に研究していきませんか? </li></ul></ul>
ご静聴ありがとうございました
Upcoming SlideShare
Loading in …5
×

MapionにおけるSolr利用状況

5,707 views

Published on

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
5,707
On SlideShare
0
From Embeds
0
Number of Embeds
1,916
Actions
Shares
0
Downloads
51
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

MapionにおけるSolr利用状況

  1. 1. Mapion における Solr 利用状況 Solr 勉強会 2009.7.21 株式会社マピオン 藤本 亜矢子/ 谷本 真紀
  2. 2. どこで使ってる? キーワード検索 ファセット 緯度経度から検索
  3. 3. Solr 導入の経緯 <ul><li>「マピオン電話帳」で MySQL5.0 を採用 </li></ul><ul><li>でも、メチャクチャ負荷高い (  ̄ o  ̄ ;) </li></ul><ul><li>パフォーマンスチューニング行う </li></ul><ul><li>でも、まだ負荷高い (  ̄へ ̄ |||) </li></ul><ul><li>このままでは次は無理 o(´д`)o </li></ul><ul><li>2008 年9月、 Solr1.3 リリース </li></ul><ul><li>1 ヶ月調査 </li></ul><ul><li>イケる !! (  ̄∇ +  ̄ )v キラーン </li></ul>
  4. 4. 統計 <ul><li>クエリー </li></ul><ul><ul><li>1日約100万 (7 月 17 日時点 ) </li></ul></ul><ul><ul><li>範囲検索30%、キーワード検索70% </li></ul></ul><ul><li>負荷 </li></ul>
  5. 5. データ件数は? <ul><li>電話帳 ・・・ 約900万件 ( shards : 30 ) </li></ul><ul><li>ランドマーク ・・・ 約40万件( shards : 4 ) </li></ul><ul><li>住所 ・・・ 約12万件 </li></ul><ul><li>郵便番号 ・・・ 約12万件( shards : 4 ) </li></ul><ul><li>その他もろもろ ・・・ 数十万件 </li></ul><ul><li>※ コア数 ・・・ 約60 (;´д ` ) ノ </li></ul>
  6. 6. 運用 <ul><li>データ更新 </li></ul><ul><ul><li>電話帳は差分更新 (delta-import) </li></ul></ul><ul><ul><li>1 日 2 回更新 </li></ul></ul><ul><ul><li>その他データは更新頻度に応じて全件更新 </li></ul></ul>
  7. 7. サーバー構成は? <ul><li>2009 年 7 月 21 日時点 </li></ul>load balancer load balancer 検索用 Solr shards 用 Solr 検索用 Solr 検索用 Solr 検索用 Solr 検索用 Solr 検索用 Solr 検索用 Solr 検索用 Solr インデックス用 Solr RDBMS shards 用 Solr shards 用 Solr Snapshot Collection Distribution Distributed Search <ul><li>shards 用: 3 台 </li></ul><ul><li>検索用: 8 台 </li></ul><ul><li>インデックス用: 1 台 </li></ul>
  8. 8. Mapion 拡張 その① <ul><li>緯度経度+距離 </li></ul><ul><ul><li>拡張コンポーネント として実装 </li></ul></ul><ul><ul><li>緯度経度は ピクセル座標 も格納 </li></ul></ul><ul><ul><li>距離計算は負荷が高いのでピクセル座標で行う </li></ul></ul><ul><ul><li> ピクセル座標なら三平方の定理で求められる </li></ul></ul><ul><ul><li>Distributed Search によって 複数サーバー/複数 CPU を使って距離を計算することができる </li></ul></ul>
  9. 9. Mapion 拡張 その② <ul><li>場所+キーワード </li></ul><ul><ul><li>2BOX 検索で周辺検索 </li></ul></ul><ul><ul><li>q= キーワード &near= 場所 </li></ul></ul><ul><ul><li>1BOX 検索 (Google マップ風 ) でも周辺検索 </li></ul></ul><ul><ul><li>q= キーワード 場所 </li></ul></ul><ul><ul><li>どちらも 場所 をジオコーディングして内部的に拡張コンポーネントに検索方法を切り替える </li></ul></ul>
  10. 10. Mapion 拡張 その③ <ul><li>住所検索、郵便番号検索 </li></ul><ul><ul><li>住所の番地号データは件数が多すぎるのでそもそも Solr には入れていない(数千万件) </li></ul></ul><ul><ul><li>ヒットしなかった場合は独自の 住所検索エンジン に切り替える </li></ul></ul><ul><ul><li>住所検索は特殊。全文検索だけでは救えない場合がある </li></ul></ul>
  11. 11. Mapion 拡張 その④ <ul><li>apache-solr-core-1.3.0.jar </li></ul><ul><ul><li>電話帳は当初分割数が 10 程度だったが、パフォーマンス/スケールアウトを考え 30 に分割数を増やした </li></ul></ul><ul><ul><li>が、パフォーマンスが上がらない ( ̄ー ̄ ? ) </li></ul></ul><ul><ul><li>ソースを調べてみると、1ホストに対して 20コネクション しか接続できない (*  ̄ o  ̄ ) ゝオーイ !! </li></ul></ul><ul><ul><li>Java の起動オプションで指定できるように修正した </li></ul></ul>
  12. 12. 最後に <ul><li>Tokenizer </li></ul><ul><ul><li>形態素解析とのハイブリッド方式で精度を上げたい </li></ul></ul><ul><ul><li>一緒に研究していきませんか? </li></ul></ul>
  13. 13. ご静聴ありがとうございました

×