1.介绍
对Solr简单地下定义是:Solr是一个面向自然语言处理的搜索引擎技术,开放源码的、基于 Lucene Java的搜索服务器,易于加入Web应用程序中。
说起搜索引擎技术,我们不得不提一下 Lucene。Lucene是一个基于Java的全文信息检索工具包,它不是一个完整的搜索应用程序,而是为你的应用程序提供索引和搜索功能。Lucene是Apache Jakarta(雅加达)家族中的一个开源项目,也是目前最为流行的基于Java开源全文检索工具包。目前已经有很多应用程序的搜索功能是基于 Lucene,比如Eclipse帮助系统的搜索功能。Lucene能够为文本类型的数据建立索引,所以只要把你要索引的数据格式转化为文本格式,Lucene就能对你的文档进行索引和搜索。我重点介绍的是Solr,,Solr与 Lucene并不是竞争对立关系,恰恰相反,Solr依存于Lucene,因为Solr底层的核心技术是使用Lucene来实现的。Solr和 Lucene的本质区别有三点:搜索服务器、企业级和管理。Lucene本质上是搜索库,不是独立的应用程序,而Solr是。Lucene专注于搜索底层的建设,而Solr专注于企业应用。Lucene不负责支撑搜索服务所必需的管理,而Solr负责。所以说 Solr是 Lucene面向企业搜索应用的扩展。
另外在介绍Solr之前,我们先来了解下什么叫全文检索。比如我们电脑里有一个文件夹,文件夹中储存了很多文件,例如Word、Excel以及PPT,我们希望根据搜索关键字的方式搜索到相应的文档,比如我们输入Solr,所有内容含有Solr这个关键字的文件就会被筛选出来,这个就是全文检索。
2.Solr简介与部署
Solr是一种开放源码的、基于 Lucene Java的搜索服务器,易于加入Web应用程序中。Solr提供了层面搜索(就是统计)、命中醒目显示并且支持多种输出格式(包括XML/XSLT 和JSON等格式)。它易于安装和配置,而且附带了一个基于HTTP的管理界面。可以使用Solr的基本搜索功能,也可以对它进行扩展从而满足企业的需要。Solr的特性包括:
1.高级的全文搜索功能。
2.专为高通量的网络流量进行的优化。
3.基于开放接口(XML和 HTTP)的标准。
4.综合的HTML管理界面。
5.可伸缩性——能够有效地复制到另矶二个Solr搏索服务器。
6.使用XML配置达到灵活性和适配性。
7.可扩展的插件体系。
了解了Solr基本概念之后,我们来简单介绍下Solr的部署步骤。Solr是Apache下的一个顶级开源项目,采用Java开发,所以在安装Solr之前我们首先需要安装JDK环境。另外,Solr提供了一个基于HTTP 的管理界面,所以需要Tomcat容器,但本篇就不用Tomcat容器,采用直接导进数据的方式来演示。
2.1 Solr的具体安装部署如下:
1)下载JDK、Solr安装包。
JDK下载地址:Java Downloads | Oracle 中国,这里我们使用的Solr的版本是6.6.0,Solr版本最好是搭配JDK1.8,虽然官网没有明确要求Solr要使用JDK1.8,但是Solr6中部分功能对servlet-api的版本有要求,所以建议使用JDK1.8.这里使用JDK版本jdk1.8.0_91。
Solr下载地址:Index of /dist/lucene/solr,这里我们使用solr-6.6.0版本。
下载完成,配置JDK,配置完成如下图所示:
a.在环境变量中建立JAVA_HOME,并在Path中加入安装好的jdk路径。
b.下载好Solr并解压到一个文件夹下,我这里解压到E:\pywork\solr-6.6.0。
c.进入solr的bin目录下,在命令窗口输入启动命令 solr start,关闭命令是 solr stop -all :
d.在浏览器地址栏访问http://localhost:8983/solr/,即可访问到solr的可视化管理界面Solr Admin。
在E:\pywork\solr-6.6.0\bin目录下执行一下命令,建立一个核心 jcg :
solr create -c jcg -d basic_configs
执行完命令后关闭再启动solr,就可以看到上一张图片效果。
e.导入数据
本例中我们使用solr自带的例子。
将books.csv复制到E:\pywork\solr-6.6.0\server\solr\jcg\conf文件夹下。
打开管理文件,在第一个WARNING后添加如下内容后保存,关闭重启solr:
<uniqueKey>id</uniqueKey>
<!-- Fields added for books.csv load-->
<field name="cat" type="text_general" indexed="true" stored="true"/>
<field name="name" type="text_general" indexed="true" stored="true"/>
<field name="price" type="tdouble" indexed="true" stored="true"/>
<field name="inStock" type="boolean" indexed="true" stored="true"/>
<field name="author" type="text_general" indexed="true" stored="true"/>
f.浏览器http方式导入books.csv,显示如下结果表示导入成功。
至此安装部署完成。
3. 检索数据
4. 管理界面概述