摘要: 用solr连接solr服务器时,如果你是执行查询动作,那么推荐使用的是CommonsHttpSolrServer,如果你是执行更新操作,那么推荐使用的是StreamingUpdateSolrServer,后者是会将所有的documents缓存在本地,然后一次性写入打开的HTTP连接中,并且是一个线程安全的类。
阅读全文
摘要: 在上一篇中第4点里,我遇到了一个solr集群中各个节点在进行master-slave身份切换时困扰的问题,详情见上一篇。今天顺利地解决了这个问题,下面记录下完整的解决方案。
阅读全文
摘要: 1,一开始都是调用HttpMethod的getResponseBody()和getResponseBodyAsString,但这样总会出现下图中的警告信息这是由于没有使用缓存的缘故,如果字符串数据过多,会出警告,应该改用流和缓存来读取数据: InputStreamresStream=null; Stringresponse=null;BufferedReaderresBufferReader=null;try{httpClient.executeMethod(httpMethod);resStream=httpMethod.getResponseBodyAsStream();resBuf...
阅读全文
摘要: 在上一篇中介绍了连接Zookeeper集群的方法,这一篇将围绕一个有趣的话题---来展开,这就是Replication(索引复制),关于Solr Replication的详细介绍,可以参考http://wiki.apache.org/solr/SolrReplication。
在开始这个话题之前,先从我最近在应用中引入solr的master/slave架构时,遇到的一个让我困扰的实际问题。
阅读全文
摘要: 在上一篇中介绍了SolrCloud的第一个模块---构建管理solr集群状态信息的zookeeper集群。当我们在solr服务器启动时拥有了这样一个Zookeeper集群后,显然我们需要连接到Zookeeper集群的方便手段,在这一篇中我将对Zookeeper客户端相关的各个封装类进行分析。
阅读全文
摘要: 上一篇介绍了SolrCloud的基本概念,从这一篇开始我将深入到其实现代码中进行剖析。
SolrCloud最重要的一点就是引入了ZooKeeper来统一管理各种配置和状态信息。zookeeper是一个开源分布式的服务,它提供了分布式协作,分布式同步,配置管理等功能. 其实现的功能与google的chubby基本一致.zookeeper的官方网站已经写了一篇非常经典的概述性文章,请大家参阅:ZooKeeper: A Distributed Coordination Service for Distributed Applications.
阅读全文
摘要: SolrCloud是基于Solr和Zookeeper的分布式搜索方案,是正在开发中的Solr4.0的核心组件之一,它的主要思想是使用Zookeeper作为集群的配置信息中心。它有几个特色功能:1)集中式的配置信息 2)自动容错 3)近实时搜索 4)查询时自动负载均衡
阅读全文
摘要: 前几天在我在博客上发了一篇《技术宅---我的网上抢火车票攻略》,短短4天内点击量达到8000多,可见火车票是近期最为火热的话题了。这几天又帮很多朋友代购火车票,不断总结经验教训,最后得到了一个完整的全自动刷票方案。 准备工作: 1)一键自动刷票软件Go-Home下载地址:http://code.google.com/p/go-home/,这个软件有多牛逼,看看下面的项目简介就知道了。。。 2)Firefox浏览器或者Chrome浏览器 3) 12306自动登陆脚本https://gist.github.com/raw/1570973/f200dd587f6d68ab81edf7...
阅读全文
摘要: 写在前面写这篇文章的起因是今天在12306上买火车票时,被这牛逼的网站给震撼到了,靠,牛叉得让人无语的用户体验啊。就讲讲我是如何利用一个小工具做辅助,幸运地抢到了回家的卧铺票的。希望能给有需要的兄弟们做个参考。 回顾下我今天网上购票的全过程,总结起来有四个难关,第一是登陆,第二是预定,第三是提交订单,第四是支付。本文的目的主要是为了在第一和第二关提供一些帮助。准备工作:1,firefox浏览器2,油猴脚本扩展GreaseMonkey(有园友反映这里看不懂啥意思,好吧,特别补充一段。GreaseMonkey是一个firefox扩展,当然,别再问我啥是扩展了,请自行google,简单说,就是装了这
阅读全文
摘要: 客户调用批量查询接口对Solr核进行查询时觉得查询响应时间有些慢,接口的内部实现目前是顺序执行每个查询,再把结果汇总起来返回给调用方。因此,考虑引入线程池对查询接口的内部实现进行重构优化。先声明一个大小可随之增长的线程池,privateExecutorServiceexecutor=Executors.newCachedThreadPool();//查询请求处理线程池 然后是主线程方法的代码:publicList<Map<String,String>>queryEntityList(StringentityCode,List<Long>idList)thro
阅读全文