Solr是一个高性能,采用Java开发,基于Lucene的全文搜索服务器。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面, 是一款非常优秀的全文搜索引擎。
一、下载和安装
本次搭建系统环境为Windows 10 ,Linux类似,以后有时间会加上。
下载Solr,这次使用最新的6.1.0版本地址:
http://www.apache.org/dyn/closer.lua/lucene/solr/6.1.0下载容器,选择比较熟悉的Tomcat,版本选择Tomcat 8.0 地址:
http://tomcat.apache.org/download-80.cgi-
都是压缩文件,如果你可以熟练的将压缩包解压到相同目录下,最后看到这俩家伙说明你离成功不远了..
将
\solr-6.1.0\server\solr-webapp\webapp
文件夹 复制到\apache-tomcat-8.5.4\webapps
下,并将webapp 修改为solr。打开
\apache-tomcat-8.5.4\webapps\solr\WEB-INF\web.xml
,修改以下配置(可能被注释掉,先解除注释),将solr/home修改为你的。
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<!-- 这个目录就是配置、索引、数据以后存放的地方,数据量上去后会非常庞大。 -->
<env-entry-value>E:\Server\solr-6.1.0\server\solr</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
其实到这步基本上完事了,如果你需要打印日志的话,就接着配置6、7。
- 将
\solr-6.1.0\server\lib\ext
下的所有jar包复制到\apache-tomcat-8.5.4\webapps\solr\WEB-INF\lib
下. - 将
\solr-6.1.0\server\resources\log4j.properties
复制到```\apache-tomcat-8.5.4\webapps\solr\WEB-INF\classes`` 下(如果没有classes文件夹创建之),好了现在日志也有了。
OK,现在运行\apache-tomcat-8.5.4\bin\startup.bat
启动小猫咪, 访问http://127.0.0.1:8080/solr/index.html/
如果可以成功打开的话,恭喜你Solr 搭建成功了,是不是很简单...
不过这些都是小学生入门级别的配置...,更专业、详细的配置见Solr 官方文档及Tomcat 官方文档
二、基本操作
有童鞋会说了,搭建好了然后怎么提供搜索服务呢?别急,现在的Solr就相当于一个空的数据库,什么还没有,首先我们要搞一点数据来,那么我们要先创建一个Core(相当于创建数据表)这个Core我们叫user_core吧。
- 进入 core home 目录,我们现在配的是
\solr-6.1.0\server\solr
,在该目录下创建user_core
文件夹 - 将
\solr-6.1.0\server\solr\configsets\basic_configs\conf
文件夹复制到user_core
文件夹下 -
进入管理页面,填写表单,点击Add Core。
添加成功后选择我们的core,执行一下查询,我们可以看到毛豆没查出来,因为现在core里空空如也~
q 就是查询参数 *:*相当于查询所有,至于 name:李* 就是查询所有name以李开头的行
好了,我们按照下面步骤插入点数据吧
- 配置Schema,增加字段(刚才只是相当于创建了数据表,并没有添加字段)
2.点击 Add Field,增加name(string)、age(int) 两个字段,现在我们的user_core,有三个字段id、name、age
3.点击左侧是Documents插入数据,这里选择以json的方式,我们插入这条
{'id':1,'name':'土豆','age':20}
试试(这里的update在 id相同时执行更新操作,不同则执行新增操作)。
4.插入成功后再执行下Query 看看是不是已经可以查出来啦。
三、总结
我们可以这样理解,Solr相当于数据库,Core相当于表,Documents内的Field相当于表中的字段。至于操作,很简单吧,也就是些CRUD操作,比操作数据库还简单点,但是比数据库快多了。
Solr 提供以HTTP 请求的形式的API,任何语言都可以与之交互,下篇文章将介绍如果使用SolrJ 以Java 编程方式操作Solr,这也是使用Solr最普遍的形式。
本文是笔者刚接触Solr时写下的,如果你想更多的了解 Solr 及 Solr Cloud请阅读我的文集,那里更加完善 ->Solr&Solr Cloud