设为首页 收藏本站
查看: 1149|回复: 0

[经验分享] Solr Spatial Search

[复制链接]

尚未签到

发表于 2015-7-17 07:31:05 | 显示全部楼层 |阅读模式
  三种fieldType:
  LatLonType
  SpatialRecursivePrefixTreeFieldType(RPT)
  BBoxField
  
  Spatial Filters:
  geofilt
  &q=*:*&fq={!geofilt sfield=store}&pt=45.15,-93.85&d=5
  all the results within the circle of the given radius around the initial point
  bbox
  &q=*:*&fq={!bbox sfield=store}&pt=45.15,-93.85&d=5.
  all the results in the box
  
  specify large distErrPct value , the filter will run faster
  
  arbitrary rectangle
  RPT support
  
solr post filter
  &q=...mykeywords...&fq=...someotherfilters...&fq={!geofilt cache=false cost=100}&sfield=store&pt=45.15,-93.85&d=5
  
  distance function queries
  geodist,dist,hsin,sqedist
  
  geodist
  sort result by distance asc
  &q=*:*&fq={!geofilt}&sfield=store&pt=45.15,-93.85&d=50&sort=geodist asc
  return distance as the document score
  &q={!func}geodist()&sfield=store&pt=45.15,-93.85&sort=score+asc
  
  More examples
  
  use as a sub-query to expand the search results
  Here we will query for results in Jacksonville, Florida, or within 50 kilometers of 45.15,-93.85 (near Buffalo, Minnesota):
  &q=*:*&fq=(state:"FL" AND city:"Jacksonville") OR {!geofilt}&sfield=store&pt=45.15,-93.85&d=50&sort=geodist()+asc
  
  facet by distance
  To facet by distance, you can use the Frange query parser:
  &q=*:*&sfield=store&pt=45.15,-93.85&facet.query={!frange l=0 u=5}geodist()&facet.query={!frange l=5.001 u=3000}geodist()
  There are other ways to do it too, like using a {!geofilt} in each facet.query.
  
  boost nearest results
  &q.alt=*:*&fq={!geofilt}&sfield=store&pt=45.15,-93.85&d=50&bf=recip(geodist(),2,200,20)&sort=score desc
  
SpatialRecursivePrefixTreeFieldType (abbreviated as RPT)
  Solr 4's new spatial field offers several new features and improvements over LatLonType:

  • Query by polygons and other complex shapes, in addition to circles & rectangles
  • Multi-valued indexed fields
  • Ability to index non-point shapes (e.g. polygons) as well as point shapes
  • Rectangles with user-specified corners that can cross the dateline
  • Multi-value distance sort and score boosting (warning: non-optimized)
  • Well-Known-Text (WKT) shape syntax (required for specifying polygons & other complex shapes)
  RPT schema
  class
  distErrPct指中心点与边界距离的精确度,【0.0---0.5】越小越精确,索引慢,占用磁盘越多,查询慢,反之则反
  geo 默认值为true,将应用经纬度坐标,数学模型是一个球体,false则是二维的xy坐标
  maxDistErr 定义索引数据的详细程度,默认一米,只比0.000009 degrees小一点,这个设置用来在内部计算恰当的maxLevels
  maxLevels 设置索引数据的最大格子深度,更直观的是通过指定maxDistErr来计算恰当的maxLevels
  name
  prefixTree 定义spatial grid的实现,prefixTree把一个地域范围映射成一个grid,每一个grid被分解成一系列下一级的sub grid ,如果geo=false默认的prefix tree是geohash,否则是quad,geohash有32个孩子grid,quad有4个。
  spatialContextFactory 如果使用多边形,则需要指定它的实现(com.spatial4j.core.context.jts.JtsSpatialContextFactory),设置autoIndex=true提升多边形的性能  
  units 现在只能是degrees,是用来计算maxDistErr的,1degree大约111.2千米
  worldBounds 如果geo=false则需要指定worldBounds,format : ENVELOPE(minX, maxX, maxY, minY)
  samples



more info about this http://wiki.apache.org/solr/SolrAdaptersForLuceneSpatial4

BBoxField
  BBoxField索引一个矩形,支持通过boundary box 查询  
  samples






  The latter is the only way to choose a predicate other than Intersects.  For example:
  &q={!field f=bbox}Contains(ENVELOPE(-10, 20, 15, 10))
  Now to sort the results by one of the relevancy modes, use it like this:
  &q={!field f=bbox score=overlapRatio}Intersects(ENVELOPE(-10, 20, 15, 10))
  You can also use&debug=results to see useful score computation info.
  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-87407-1-1.html 上篇帖子: Solr的函数查询(FunctionQuery) 下篇帖子: 【Solr初探】Solr安装,启动,查询,索引
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表