solr简介与环境搭建

什么是solr

现实生活中,我们知道大多数网站都有搜索功能,但是搜索功能往往消耗大量系统的资源,同时由于数据库大量数据加载会拖垮我们应用程序的性能,给用户带来不好的产品体验,solr正是为了解决这一问题而诞生的,我们可以抽出我们搜索的这一部分负载到外部的服务器,这个外部服务器就是指solr,由它给我们提供搜索服务,通过使用类似REST的HTTP API访问solr,确保我们能从几乎任何编程语言来使用solr。

Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。

Solr可以独立运行,运行在Jetty、Tomcat等这些Servlet容器中,Solr 索引的实现方法很简单,用 POST 方法向 Solr 服务器发送一个描述 Field 及其内容的 XML 文档,Solr根据xml文档添加、删除、更新索引 。Solr 搜索只需要发送 HTTP GET 请求,然后对 Solr 返回Xml、json等格式的查询结果进行解析,组织页面布局。Solr不提供构建UI的功能,Solr提供了一个管理界面,通过管理界面可以查询Solr的配置和运行情况。

前期准备

solr 需要运行在一个Servlet容器中,这里我使用的是Solr4.10.3,该版本要求jdk使用1.7以上,Solr默认提供Jetty(java写的Servlet容器),本篇博客使用Tocmat作为Servlet容器

环境搭建

1.首先将需要的软件包上传到Linux,提供两种方法

  • 通过xshell直接拖拽上传,需要在你的linux系统上装上lrzsz,直接将软件包拖拽到你的xshell终端屏幕即可完成上传,上传之后软件所处的目录就是你当前的目录
  • 通过winscp上传

2.解压tomcat与solr,将solr目录下\disk\solr-4.10.3.war拷贝到tomcat的webapps目录下,并改名成solr.war

(这里我都是解压到/usr/local目录下的)

 

3.启动tomcat,solr.war会自动解压,将原来的solr.war包进行删除,删除的原因是我们需要修改解压的内容,如果不删除,每次启动tomcat都会解压war包,将我们修改的内容覆盖了。注意这里删除war的时候要先关闭tomcat,否则当你删除war包的时候会自动删除war包对应的项目

4.拷贝solr文件夹下example\lib\ext 目录下所有jar包到Tomcat的webapp\solr\WEB-INF\lib目录下

 5.拷贝log4j.properties文件,在tomcat下webapps\solr\WEB-INF目录中创建classes文件夹,复制solr目录下example\resources\log4j.properties至classes目录.

6. 创建solrhome及配置solrcore的solrconfig.xml文件.solrhome文件夹可以随意创建,我这里创建在tomcat同级文件夹下,将solr文件夹下example\solr下的所有内容拷贝到solrhome文件夹下

7.设置Solr home ,修改Tomcat目录 下webapp\solr\WEB-INF\web.xml文件,如下所示:

  <env-entry>
	<env-entry-name>solr/home</env-entry-name>
	<env-entry-value>/usr/local/solrhome</env-entry-value>
	<env-entry-type>java.lang.String</env-entry-type>
  </env-entry>

8.浏览器访问即可访问到solr的web控制台

如果访问不到,请排查:1.前面步骤没有出错  2.tomcat正常启动  3.防火墙是否关闭,关闭命令 service iptables stop

安装中文分词器

什么叫分词器呢,简单来说,就是可以把一个文档根据语义切分成一个一个的词语,solr就是通过切分的词语来建立索引的。

这里我们采用的是IK分词器,还有许多其他的分词器,但是有些不是很好用。

1.配置IKAnalyzer的jar包,拷贝IKAnalyzer的文件到Tomcat下Solr目录中,将IKAnalyzer2012FF_u1.jar拷贝到 Tomcat的webapps/solr/WEB-INF/lib 下

2.IKAnalyzer的配置文件,将IKAnalyzer.cfg.xml,ext_stopword.dic ,mydict.dic  copy到 Tomcat的webapps/solr/WEB-INF/classes中

注意:ext_stopword.dic 和mydict.dic必须保存成无BOM的utf-8类型。

3. 修改Solr的schema.xml文件,这个配置文件位于solrhome/collection1/conf目录下,添加FieldType,FieldType就是指定分词器和过滤的一种规则,添加业务所需要的field


<!--配置中文分词器-->
<fieldType name="text_ik" class="solr.TextField">
  <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
<!--配置业务所需要的域,type指定分词器,这些域根据自己业务需求创建即可,这里仅配置两个-->
<field name="item_title" type="text_ik" indexed="true" stored="true"/>
<field name="item_sell_point" type="text_ik" indexed="true" stored="true"/>

至此,solr环境与分词器已经配置完成,后面导入数据后即可索引查询,可以通过web控制台来操作,但一般我们是根据solr提供的SDK通过代码的方式来对数据进行增删改查,下篇博客我会记录solr和spring的整合,并通过solrj(solr提供的java sdk)来操作的demo。

ps:本篇博客为自己学习时的记录,若有错误,欢迎指正和讨论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值