`
hadoopcn
  • 浏览: 23971 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
接上文,本文将继续介绍基于Solr的地理位置搜索的第二种实现方案Cartesian Tiers+GeoHash 从基于Solr的地理位置搜索(2)中可以看到完全基于GeoHash的查询过滤,将完全遍历整个docment文档,从效率上来看并不太合适,所以结合笛卡尔层后,能有效缩减少过滤范围,从性能上能很大程度的提高。   构建索引阶段: String geoHash = GeoHashUtils.encode(latitude, longitude); docment.addField("geohash", geoHash); //C ...
 本文将继续围绕Solr+Lucene使用Cartesian Tiers 笛卡尔层和GeoHash的构建索引和查询的细节进行介绍。              在Solr中其实支持很多默认距离函数,但是基于坐标构建索引和查询的主要会基于2种方案: (1)GeoHash (2)Cartesian Tiers+GeoHash 而这块的源码实现都在lucene-spatial.jar中可以找到。接下来我将根据这2种方案展开关于构建索引和查询细节进行阐述,都是代码分析,感兴趣的看官可以继续往下看。 GeoHash  构建索引阶段 定义geohash域,在sche ...
       基于Solr的空间搜索学习笔记在Solr中基于空间地址查询主要围绕2个概念实现:(1) Cartesian Tiers 笛卡尔层Cartesian Tiers是通过将一个平面地图的根据设定的层次数,将每层的分解成若干个网格,如下图所示:      每层以2的评方递增,所以第一层为4个网格,第二层为16 个,所以整个地图的经纬度将在每层的网格中体现:  笛卡尔层在Lucene中对空间地理位置查询最大的用处在查找周边地址的时候有效的减少查询量,即将查询量可以控制在分层后最小的网格中的若干docId。那么如何构建这样的索引结构呢,其实很简单,只需要对应笛卡尔层的层数来构建域即可。 也 ...
Solr在Lucene之上开发了很多Cache功能,从目前提供的Cache类型有: (1)filterCache (2)documentCache (3)fieldvalueCache (4)queryresultCache 而每种Cache针对具体的查询请求进行对应的Cache。本文将从几个方面来阐述上述几种Cache在Solr的运用,具体如下: (1)Cache的生命周期 (2)Cache的使用场景 (3)Cache的配置介绍 (4)Cache的命中监控 1 Cache生命周期 所有的Cache的生命周期由SolrIndexSearcher来管理,如果Cache对应 ...
NumericField和NumericRangeQuery是Lucene 针对数值型区间查询的优化方案。在展开阐述 NumericField 和NumbericRanageQuery 的实现原理之前,对于Lucene范围查询的实现和概念可以参考博文《TermRangeQuery源码解析》一文。       从Lucene 2.9 开始,提供对数字范围的支持,然而欲使用此查询,必须使用NumericField 添加域,使用Lucene原生API:   document.add(new NumericField(name).setIntValue(value) ...
简单介绍下 在较早版本的 Lucene 中对一定范围内的查询RanageQuery 。该Query 继承于 MulitTermQuery,在重写(rewrite )Query 树的时候将会遵从一个原则: 根据起始区间值获取term, 然后遍历,根据满足条件的term 的数目来决定 ...
两年前写的Blog,今天重新来看觉得还是感受颇深,特别是当初在javaeye上激起了一番讨论,其中有赞成,但是反对者占大多数,笔者还被有些网友冠以5 毛 党 云云。2年过去了,不知道那些持反对意见的朋友们现在对我的说法是 ...
第一章 初识Solr 1.1理解solr 1.1.1 Solr是什么 1.1.2 Solr能做什么 1.1.3 Solr的历史 1.2 Solr和Lucene 1.2.1 Solr和Lucene的关系 1.2.2 Solr为Lucene做了哪些事情   1.4 Solr的核心类 1.4.1 SolrCore 1.4.2 CoreContainer 1.4.3 IndexSchema 1.4.4 SolrIndexConfig 1.4.5 SolrIndexSearcher 1.4.6 UpdateHandler   ...
    主要对一般docId为下标对应域值的结构做了改造,如果大家有更好的建议,欢迎大家提议和拍砖。 主要思路: 生成一个下标为 域 Term 遍历的Postion 且值为域值的数组: A[p]=field value  因为域值并不会像docId一样为唯一键递增,所以在创建的时候 初始化: Int [] A = new Int[reader.maxDoc()] 结束的时候如果 p<A.length(因为肯定有多个DocId对应相同域值) 则释放那些空闲空间  整个内存使用率取决于该值的重复率,重复越多则内存越节省,从我们接入绝大多数业务的类型需要进行大区间过滤的 ...
hive是做为客户端被安装的,调用了hadoop的脚本,有两点需要注意: 1.需要在hadoop-env.sh中增加以下脚本 #import hive jar for LIB in `ls -1 $HIVE_HOME/lib/*.jar ./lib/*.zip 2>/dev/null` do HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$LIB done 加载所有hive/lib下的jar包 2.将hive-default.xml、hive-env.sh.template、hive-exec-log4j.properties、hive-log4j. ...
附件是关于Hadoop入门培训的PPT,后续会有关于PPT详细内容介绍的文档,敬请关注。
详细的内容放在附件中,以下列出大纲,以后会陆续有新的章节放出   第一章脚本部分写作大纲,包含以下主题 大纲: 1.        介绍的集群启动过程并画出执行序列图,用一段文字对整体执行过程进行说明 2.        说明集群启动和停止的方式有哪几种:start-all.sh/sop-all.sh和start-dfs.sh/stop-dfs.sh等 3.        以start-all.sh为例说明集群启动的过程。
Global site tag (gtag.js) - Google Analytics