借助Docker技术的Solr集群实现
在本项目中,为了更好的模拟真实的生产环境,对于SolrCloud技术不采用伪集群方式,而是真正实现一个搜索集群,当然由于笔者只是学生,没有资金租用多台服务器来搭建集群,因此借助于Docker的容器技术在一台服务器上虚拟出逻辑上的六台主机。
SolrCloud基础
本节是SolrCloud基础理论知识,我也是从网上学习到,这里只是进行一些整理。参考的博客比本文更好,更有深度,有耐心的请看参考的原文– SolrCloud之分布式索引及与Zookeeper的集成
SolrCloud基本概念
SolrCloud模式下有Cluster,Node,Collection,Shard,LeaderCore,ReplicationCore等重要概念。
搜索结果的筛选和排序
实现对搜索结果的筛选和排序,需要利用solr的sort功能和facet功能,这两个是垂直搜索中比较常用的功能。对于如何使用这两个功能,其实在索引建好之后我们并不需要做太多的工作就能使用,只用在查询的时候指定相关的参数,Solr会根据参数来执行相应的查询,获得相应的结果。
因为项目中使用SolrJ作为Solr的客户端,并通过servlet提供对外的服务接口,本文将以介绍如何用SolrJ来实现,此外也会涉及利用HTTP接口的参数使用。
各种查询及参数说明
Solr默认有三种查询解析器(Query Parser):
- Standard Query Parser
- DisMax Query Parser
- Extended DisMax Query Parser (eDisMax)
第一种是标准的Parser,最后一种是最强大的。
本文中所提到的参数并不能包含Solr所有参数,具体的使用和更详细的参数请参考官方文档。
基于webmagic爬虫框架的数据抓取
有人可能会有疑问,Heritrix用的好好的,干嘛还要换别的呢?Heritrix固然很好,成熟、稳定、有管理界面、监控、多线程、开箱即用。但这真的适合我们这种垂直爬虫吗?我觉得未必,用Heritrix,你可以通过配置文件来确定接受规则和URL的发现规则,然后直接构建运行就好了。然而对于我来说,它的配置文件中的那些选项说的并不是那么清楚,相关文档也都是很简单的,想用一些复杂的规则都不知道这样对不对,至少要等到好久抓出来东西了,发现多抓了或者少抓了,你才发现配置文件写错了。并且配置文件中的项目也是老多的,这么多东西把人搞的头晕目眩。
好吧,总的来讲,如果你是爬虫老手,对Heritrix的架构了解比较清晰的,Heritrix是个很好的选择。但是对于一个新手,我觉得webmagic更加灵活高效。就拿我的体验来讲,当初用Heritrix抓了3天才抓了七千多数据(可能是我配置文件写的不好),而用webmagic一个白天就抓了一万三的数据。
Solr空间搜索配置及实践
前面讲了空间搜索的两个常用原理,应该还算是比较容易理解的,毕竟只是算法,并不需要我们来实现,我们通过简单地配置就可以用上Solr的空间搜索的功能。下面就来讲讲如何配置空间搜索。
空间搜索原理及相关算法
基于Ionic的客户端设计
客户端的设计,利用的是Hybrid APP的构建技术,核心是HTML5技术,下面先简单介绍下Hybrid应用的以及Ionic框架。
技术介绍
Hybrid App介绍
移动app可以大致被分为三种,native、hybrid和web app。如果使用native app,你可以使用设备和操作系统的所有能力,同时,平台的性能负荷最小。然而,构建web app可以让你的代码跨平台,使得开发时间和成本大大减少。而hybrid app把这两者的优点都结合起来,使用一套共同代码,在许多不同的平台上部署类似原生的app。
搜索服务API
这篇文章主要是关于solr和普通用户之间的桥梁SearchService
,简单了解下整过工作流程.