spatial search称为地理空间搜索,主要可以根据位置信息得到相关的搜索数据;
一 功能:
1.1使用spatial search可以完成:1.索引位置和其他形状的位置;
2.通过边界框,圆,或者其他形状来过滤搜索结果;
3.通过点之间的距离,或相对区域之间的距离进行排序或者提高得分(排序的时候根据得分进行);
4.产生一个2D的点,热地图生成或者由点进行画线;
1.2可以使用的field:
LatLonPointSpatialField
LatLonType (now deprecated) and its non-geodetic twin PointType
SpatialRecursivePrefixTreeFieldType(RPT for short), including RptWithGeometrySpatialField, a
derivative
BBoxField
LatLonPointSpatialField是一种比较理想的field类型对大多数使用者来说。RPT提供更多的特点,为更先进的,个性化的使用,像多边形,热地图等;
二使用方式:
2.1schema中定义:
<fieldType name="location" class="solr.LatLonPointSpatialField" docValues="true"/>
Indexing Points使用(x,y)格式进行保存;
2.2 Searching with Query Parsers
参数包括:d:单位是km;pt:(x,y),单位是cm;sfield:一个空间field,如location;score:得分。()
2.3geofilt
查找附近5公里的所有文档:&q=:&fq={!geofilt sfield=store}&pt=45.15,-93.85&d=5
bbox:&q=:&fq={!bbox sfield=store}&pt=45.15,-93.85&d=5
通过任意的矩形进行过滤:
&q=:&fq=store:[45,-94 TO 46,-93]
三Distance Sorting or Boosting (Function Queries)
有四种距离方法进行查询:geodist dist hsin sqedist;
geodist (sfield,latitude,longitude);
这里有博客:
有测试代码:
http://blog.csdn.net/hu948162999/article/details/44174871
,