Apache Solr v4 Spatial Search

1,379 views

Published on

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

  • Be the first to like this

No Downloads
Views
Total views
1,379
On SlideShare
0
From Embeds
0
Number of Embeds
23
Actions
Shares
0
Downloads
16
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Apache Solr v4 Spatial Search

  1. 1. Apache Solr v4 Geo Spatial Search @mknkisk 13年7月21日日曜日
  2. 2. Geo Spatial Search 位置情報(緯度経度)を使った検索 店舗検索 ナビゲーションサービス 13年7月21日日曜日
  3. 3. Geo Spatial Search Google Map Foursquare 13年7月21日日曜日
  4. 4. Solr v3 => v4 v3 でも空間検索はサポート v4.3.1 では v3 形式もサポート v4.3.1 時点での example の schema.xml はまだ v3 の空間検索方式 13年7月21日日曜日
  5. 5. Solr v3 => v4 Solr v4 で検索/設定方法が変更 fieldType の追加 (location_rpt) geodist() の使用を非推奨 13年7月21日日曜日
  6. 6. Dependency library 空間検索ロジックは OSS の spatial4j solr.war に入ってる ポリゴンを検索したい場合 jts.jar が必要 solr.war には入ってない 13年7月21日日曜日
  7. 7. Put jts.jar in solr.war jts.jar をダウンロード http://sourceforge.net/projects/jts-topo- suite/ solr.war を解凍 WEB-INF/lib 配下に jts.jar を配置 solr.war に再度アーカイブ 13年7月21日日曜日
  8. 8. Put jts.jar in solr.war http://stackoverflow.com/questions/ 13282014/how-to-install-spatial4j-into- solr4 13年7月21日日曜日
  9. 9. MEMO JTS The JTS Topology Suite is an API for modelling and manipulating 2- dimensional linear geometry. WKT (Well Known Text) Well-known text (WKT) is a text markup language for representing vector geometry objects on a map, spatial reference systems of spatial objects and transformations between spatial reference systems. 13年7月21日日曜日
  10. 10. Example: schema.xml <types> .... <fieldType name="location_rpt" class="solr.SpatialRecursivePrefixTreeFieldType" geo="true" distErrPct="0.025" maxDistErr="0.000009" units="degrees" /> .... </types> 13年7月21日日曜日
  11. 11. Example: schema.xml <fields> .... <field name="store" type="location_rpt" indexed="true" stored="true"/> .... </fields> 13年7月21日日曜日
  12. 12. Example: schema.xml solr.war/example/solr/collection1/conf/ schema.xml の設定 WGS84 (世界測地系) 単位: degrees (度分秒) 13年7月21日日曜日
  13. 13. Example: schema.xml Solr Wiki を見てるとWGS84以外は注 意点が多そう Indexing時にWGS84に変換してやるの が良さそう 13年7月21日日曜日
  14. 14. Example: Indexing (Point) 金閣寺 <field name=”store”>135.729 35.039</field> 銀閣寺 <field name=”store”>135.798 35.026</field> 京都駅 <field name=”store”>135.757 34.986</field> 13年7月21日日曜日
  15. 15. Example: Indexing (Python) import pysolr def main(): solr = pysolr.Solr('http://localhost:8983/solr/', timeout=10) solr.add([ { "id": "1", "name": u"金閣寺", "store": "135.729 35.039" }, { "id": "2", "name": u"銀閣寺", "store": "135.798 35.026" }, { "id": "3", "name": u"京都駅", "store": "135.757 34.986" } ]) solr.optimize() if __name__ == '__main__': main() 13年7月21日日曜日
  16. 16. Example: Searching 京都駅を中心, 周辺10km, キーワード: “寺” http://localhost:8983/solr/collection1/select? q={!geofilt score=distance sfield=store pt=34.986,2C135.757 d=10} &fq=name:寺&sort=score asc&fl=*,score 13年7月21日日曜日
  17. 17. Example: Searching docs: [ { id: "2", store: "135.798 35.026", name: "銀閣寺", score: 0.052228004 }, { id: "1", store: "135.729 35.039", name: "金閣寺", score: 0.057749357 } ] score が中心点からの 距離(distance) 単位は degrees 13年7月21日日曜日
  18. 18. Units, Conversion 距離の単位変換はSolr Wikiを参考に http://wiki.apache.org/solr/SolrAdaptersForLuceneSpatial4#Units. 2C_Conversion Degrees to kilometers: degrees * 111.1951 Degrees to miles: degrees * 69.09341 13年7月21日日曜日
  19. 19. More Information Solr Wiki: Spatial Search http://wiki.apache.org/solr/SpatialSearch Solr Wiki: Lucene / Solr 4 Spatial http://wiki.apache.org/solr/SolrAdaptersForLuceneSpatial4 Github: spatial4j https://github.com/spatial4j/spatial4j 13年7月21日日曜日

×