マピオン様におけるLucene solrの実装
- 7. 2009 年 ORACLE 地図のフリースクロール化 2007 年 ~ 2004 年 フリーキーワード検索 電話帳データ投入 PV 増大 ORACLE Spatial MySQL Spatial FAST Lucene/Solr データ: 10 万件 データ:~ 100 万件 データ: 100 万件~ データ: 100 万件~ データ: 1000 万件~
- 11. ロードバランサー Solr Solr Solr ロードバランサー Solr Solr Solr Solr Solr RDB Broker インデックスの実体はなく、 Searcher へ分散検索する。 また、ローカル検索の機能を実装している。 Searcher 分割されたインデックスを持ち、実際の検索処理を行う。 Indexer RDB からデータをインポートしインデックス化する。 DataImportHandler レプリケーション Distributed Search Lucene/Solr 3 層構成
- 16. Solr1.3 のときは 独自に Lucene の Filter を作成したり、インデックスファイルを操作して実装。 検索範囲に隣接する短形で絞り込む 絞り込んだデータに対して距離を計算 指定した距離以上のデータをなくす ※ 計算した距離は絞り込みだけではなく ソート用としても再利用 500m
- 17. Solr1.4 のときは lucene-spatial を利用。ただし問題が。。。 距離の単位がマイル ->メートルへの変換が必要 ある形範囲が検索できない ->日本の緯度経度では正しく検索できない ->どうしたか? 経度を -200 にして、北米の緯度に近いものにして計算
- 21. 検索漏れ、辞書メンテナンス 負荷を考えて 基本的に N-GRAM 方式。 ただし、住所検索に関しては 検索ノイズ を軽減するためにトークナイザーを自作。 ->京都府問題 「京都府」で検索すると「東京都府中市」が ヒットしてしまう。 ->形態素解析+ N-GRAM 形態素解析し3文字以上の場合は N-GRAM でさらに分割