【Solr空间搜索SpatialSearch】

喂,这几个单词什么意思,你晓得伐

名词 含义
longitude 经度
latitude 纬度
LatLon 纬度经度的缩写
Grid 网格

空间搜索

空间搜索,又名Spatial Search(Spatial Query),基于空间搜索技术,可以做到:
1)对点Point(经纬度)和其他的几何图形建索引
2)根据距离排序
3)根据矩形,圆形或者其他的几何形状过滤搜索结果

玩转经纬度

Solr自3.1以来就开始支持地理空间数据搜索,例如fieldType使用location_rpt可存储地理位置的经纬度信息。
【Solr空间搜索SpatialSearch】_第1张图片
注意:建议不要使用Solr的保留字或者存在字段名和字段类型冲突的情况,否则可能在录入数据时出现异常信息。

  1. 添加经纬度字段latitude_longitude,类型为location_rpt
    在这里插入图片描述
  2. Reload索引,确保索引字段已生效
    【Solr空间搜索SpatialSearch】_第2张图片
  3. 存储经纬度索引数据
    【Solr空间搜索SpatialSearch】_第3张图片
  4. 确保索引数据已录入
    【Solr空间搜索SpatialSearch】_第4张图片

业务场景

学习利用空间查询的基本语法和集合操作,可以帮助实现相关的几何搜索需求。

例如,圆形、方形及多边形查询语法示例:
q={&q=:&fq={!geofilt sfield=store}&pt=45.15,-93.85&d=5}
q={&q=:&fq={!bbox sfield=store}&pt=45.15,-93.85&d=5}
q={&q=:&fq={!field f=geo}Intersects(POLYGON((-10 30, -40 40, -10 -20, 40 20, 0 0, -10 30)))}

Solr支持的几种常见的几何操作:
WITHIN:在内部
CONTAINS:包含关系
DISJOINT:不相交
Intersects:相交(存在交集)

网格查询

基于网格的定位系统使用了前缀树(prefix tree)概念,以一系列或粗略或精确的前缀来代表地点。
SpatialRecursivePrefixTreeFieldType对前缀树进行抽象表示,允许实现用来索引或搜索空间数据的多层级网格系统的不同功能。

Solr空间索引主要有两类:GeohashPrefixTree(Geohash)与QuadPrefixTree(四叉树,对应笛卡尔分层策略)。
【Solr空间搜索SpatialSearch】_第5张图片
Geohash是专门为建立地球空间模型而设计的,可以在schema中定义SpatialRecursivePrefixTreeFieldType时,设定geo=true开启这个功能。
【Solr空间搜索SpatialSearch】_第6张图片

Reference

https://wiki.apache.org/solr/SpatialSearch
https://lucene.apache.org/solr/guide/6_6/spatial-search.html#SpatialSearch-RPT
https://www.slideshare.net/lucidworks/lucenesolr-spatial-in-2015-presented-by-david-smiley
https://www.slideshare.net/LucidImagination/spatial-search-with-geohashes
https://www.thesisscientist.com/docs/E-Booklets/6c243540-8456-4c6e-b1ab-491af8c276f3

美团的技术实力杠杠的,有时间也把空间搜索流程分析一遍。
https://tech.meituan.com/2014/09/02/solr-spatial-search.html

https://dataknocker.github.io/2014/04/11/solr空间索引原理及源码分析/
https://www.ibm.com/developerworks/cn/java/j-spatial/
https://www.cnblogs.com/LBSer/p/3310455.html
https://github.com/ashwin711/proximityhash

FI Solr的二次开发指南太简配了,完全无法指导特定的业务场景开发,当有客户有需求过来咨询,一来一回,浪费时间人力。
https://blog.csdn.net/u010367582/article/details/54289945
https://blog.csdn.net/alan_liuyue/article/details/77800281
https://blog.csdn.net/u014508939/article/details/85165807
https://blog.csdn.net/ljsmart/article/details/84159800
https://django-haystack.readthedocs.io/en/master/spatial.html
http://www.cnblogs.com/hanhuibing/articles/5680616.html
https://derickrethans.nl/spatial-indexes-solr.html

你可能感兴趣的:(Solr)