Lucene与Solr学习

Lucene

什么是lucene

Lucene是Apache的一个全文检索引擎工具包,通过lucene可以让程序员快速开发一个全文检索功能。Lucene和搜索引擎不同,Lucene是一个工具包,它不能独立运行,不能单独对外提供服务。搜索引擎可以独立运行对外提供搜索服务。全文检索首先对要搜索的文档进行分词,然后形成索引,通过查询索引来查询文档。全文检索就是先创建索引,然后根据索引来进行搜索的过程,就叫全文检索。比如字典的偏旁部首,就类似于luence的索引,字典的具体内容,就类似于luence的文档内容。

实现流程

  • 分为两步:
    索引流程:采集数据,构建文档对象,分析文档(分词),创建索引。
    搜索流程:用户通过搜索界面创建查询,执行搜索,搜索器从索引库搜索,渲染搜索结果。
    Lucene本身不能进行视图渲染。
    全文索引实现流程

  • 索引文件的逻辑结构
    索引文件的逻辑结构

Field

  • 下边列出了开发中常用的Filed类型,注意Field的属性,根据需求选择:
    常用的Filed类型

中文分词器

  • 中文分词就是将词,切分成一个个有意义的词,比如:“我的中国人”,分词:我、的、中国、中国人、国人。
  • Lucene自带的两个中文分词器无法满足需求。
  • IK-analyzer中文分词器: 最新版在https://code.google.com/p/ik-analyzer/上。

Solr

什么是solr

  • Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr可以独立运行在Jetty、Tomcat等这些Servlet容器中。
  • Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。
  • Lucene是一个开放源代码的全文检索引擎工具包,它不是一个完整的全文检索应用。Lucene仅提供了完整的查询引擎和索引引擎,目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者以Lucene为基础构建全文检索应用。Solr的目标是打造一款企业级的搜索引擎系统,它是基于Lucene一个搜索引擎服务,可以独立运行,通过Solr可以非常快速的构建企业的搜索引擎,通过Solr也可以高效的完成站内搜索功能。
    Solr和Lucene的对比

实现流程

  • 使用Solr 进行创建索引和搜索索引的实现方法很简单,如下:

创建索引:客户端(可以是浏览器可以是Java程序)用 POST 方法向 Solr 服务器发送一个描述 Field 及其内容的 XML文档,Solr服务器根据xml文档添加、删除、更新索引 。
搜索索引:客户端(可以是浏览器可以是Java程序)用 GET方法向 Solr 服务器发送请求,然后对Solr服务器返回Xml、json等格式的查询结果进行解析,组织页面布局。Solr不提供构建页面UI的功能,但是Solr提供了一个管理界面,通过管理界面可以查询Solr的配置和运行情况。

如何安装

注意两个目录:

  • SolrHome是Solr运行的主目录,该目录中包括了多个SolrCore目录。
  • SolrCore目录中包含了运行Solr实例所有的配置文件和数据文件,Solr实例就是SolrCore。一个SolrHome可以包括多个SolrCore(Solr实例),每个SolrCore提供单独的搜索和索引服务。

如何使用##

  • 启动Tomcat进行访问管理界面
  • solrj是访问Solr服务的java客户端,提供索引和搜索的请求方法,SolrJ通常在嵌入在业务系统中,通过SolrJ的API接口操作Solr服务,Solrj和图形界面操作的区别就类似于数据库中你使用jdbc和mysql客户端的区别一样。

SolrCloud

什么是SolrCloud

SolrCloud是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud。SolrCloud是基于Solr和Zookeeper的分布式搜索方案,它的主要思想是使用Zookeeper作为集群的配置信息中心。它有几个特色功能:
1)集中式的配置信息
2)自动容错
3)近实时搜索
4)查询时自动负载均衡

集群架构##

Solr集群的系统架构

  • Collection在SolrCloud集群中是一个逻辑意义上的完整的索引结构。它常常被划分为一个或多个Shard(分片)而不是复制。
  • 每个Core是Solr中一个独立运行单位,提供索引和搜索服务。一个shard需要由一个Core或多个Core组成。由于collection由多个shard组成所以collection一般由多个core组成。
  • 索引集合包括两个Shard(shard1和shard2),shard1和shard2分别由三个Core组成,其中一个Leader两个Replication,Leader是由zookeeper选举产生,zookeeper控制每个shard上三个Core的索引数据一致,解决高可用问题。用户发起索引请求分别从shard1和shard2上获取,解决高并发问题。
    部署架构

zookeeper使用

Zookeeper作为集群的管理工具。
1、集群管理:容错、负载均衡。
2、配置文件的集中管理
3、集群的入口
需要实现zookeeper 高可用。需要搭建集群。建议是奇数节点(投票机制,半数以上所以最好奇数)。需要三个zookeeper服务器。此架构搭建solr集群需要7台服务器。

发布了57 篇原创文章 · 获赞 1 · 访问量 6586

猜你喜欢

转载自blog.csdn.net/yanyingnan1357/article/details/82466388
今日推荐