newstyles项目实战(二十一)Solr搜索功能实现之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需要的安装包:

Linux Centos 7.0 ;

apache-tomcat-7.0.47;(jdk-7u55)

IKAnalyzer2012

从Solr官方网站(http://lucene.apache.org/solr/ )下载Solr4.10.3,根据Solr的运行环境,Linux下需要下载lucene-4.10.3.tgz,windows下需要下载lucene-4.10.3.zip。

Solr使用指南可参考:https://wiki.apache.org/solr/FrontPage。

Solr包中各个文件夹的含义:

bin:solr的运行脚本
contrib:solr的一些贡献软件/插件,用于增强solr的功能。
dist:该目录包含build过程中产生的war和jar文件,以及相关的依赖文件。
docs:solr的API文档
example:solr工程的例子目录:
        example/solr:
该目录是一个包含了默认配置信息的Solr的Core目录。
        example/multicore:
该目录包含了在Solr的multicore中设置的多个Core目录。 
        example/webapps:
    该目录中包括一个solr.war,该war可作为solr的运行实例工程。
licenses:solr相关的一些许可信息

1.搭建Solr运行所需要的环境:

JavaJdk的安装:

首先在Linux中安装Java JDK,因为本次需要运行在Tomcat容器上,所以需要安装Java JDK,这次选用的是Java 1.7版本的Jdk,如果Linux系统中有其他的自带的Java JDK时,则需要现将其他的卸载,例如OpenJDK等。可参考此博客卸载。

之后,使用SecuryCRT的SFtp上传JDK的安装包,注意,下载需要下载64位的,例如:jdk-7u55-linux-i586.tar.gz,

之后新建一个文件夹,用于存放解压后的文件,这里我选择保存在/usr/local/javajdk文件夹下面,可以先将这个压缩包复制到这个文件夹中:

cp jdk-7u55-linux-i586.tar.gz /usr/local/javajdk

然后执行解压命令:tar -zvxf jdk-7u55-linux-i586.tar.gz 解压后将原来的压缩包删除,(可能会需要一定的权限,这里作为试验,使用的是root登录的)。之后进入/usr/local/javajdk/jdk1.7.0_55文件夹可以考到下面的文件:


之后还需要我们设置一下javaJdk的路径,使得在Linux中能够有java环境:

配置Java路径:

通过命令 vim /etc/profile进入编辑状态,需要添加的内容如下所示,重要的是,设置JAVA_HOME的时候要准确的填写Javajdk的路径,其次还要注意的是,centos 7 为JAVA_HOME,而centos 6等则为JAVAHOME,这个需要注意一下:

#java environment
export JAVA_HOME=/usr/local/javajdk/jdk1.7.0_55
export
CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin

可以放置到这个profile文件的最后:


这样就配置好环境变量了,此时可以用命令查看一下环境是否配置成功了:


tomcat安装:

tomcat安装较为简单,先通过SFtp上传tomcat的安装包,然后,我们可以先建立一个文件,/usr/local/solr/tomcat,然后将文件解压到这个文件夹中,如下面所示:


之后可以进入bin目录./startup.sh命令测试下是否可以启动,然后通过浏览器访问下是否出现了熟悉的小猫。

本人安装测试时遇到的问题:如果访问不了,这个情况多出现于新安装的Linux系统,可能是由于Linux安全保护措施的是限制了对Linux上tomcat的访问,则可以进行下面的操作(最主要的问题还是端口开放的问题,如果tomcat能够正常启动的话):

可以先安装iptables服务:

yum install iptables.services

之后编辑iptables文件:vim /etc/sysconfig/iptables

里面开放相应的端口,这里默认的是8080端口:


然后重新启动iptables服务:systemctl restart iptables.service

这样就可以访问了。

solr整合:

以同样的方式上传solr安装包:solr-4.10.3.tgz.tgz,之后解压。

1. 将dist\solr-4.10.3.war拷贝到Tomcat的webapp目录下改名为solr.war

首先进入解压后的solr安装包中:进入dist目录:

cp -b solr-4.10.3.war /usr/local/solr/tomcat/webapps/solr.war

2. 启动tomcat后,solr.war自动解压,将原来的solr.war删除。

如果之前开启了tomcat 则将其关闭,再次重新启动,则war文件自动解压,不过需要注意的是,删除原来的war文件时一定要将tomcat关闭后再进行删除,要不然刚解压的文件也会被一同删除。

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


cp * /usr/local/solr/tomcat/webapps/solr/WEB-INF/lib

4. 拷贝log4j.properties文件

在  Tomcat下webapps\solr\WEB-INF目录中创建文件 classes文件夹,复制Solr目录下example\resources\log4j.properties至Tomcat下webapps\solr\WEB-INF\classes目录 。

5. 创建solrhome及配置solrcore的solrconfig.xml文件

在/usr/local/solr文件夹下面创建solrhome文件夹,用来存放solrhome。同时可以从解压的solr安装包中的example文件夹中复制一个solr文件夹,复制到solrhome中,这样solrhome文件夹中就有了solr文件夹及其内容:

进入example文件夹后:

cp -r solr /usr/local/solr/solrhome

这样就可以创建一个solrhome和对应的配置文件了。

6. 修改Tomcat目录 下webapp\solr\WEB-INF\web.xml文件,如下所示:


这样,重新启动tomcat,然后访问以下:http://localhost:8080/solr  可以看到访问成功。(地址根据自己配置的环境更改,不一定是localhost)


2.IKAnalyzer安装:

第一步:配置IKAnalyzer的jar包
拷贝IKAnalyzer的文件到Tomcat下Solr目录中,将IKAnalyzer2012FF_u1.jar拷贝到 Tomcat的webapps/solr/WEB-INF/lib 下。
第二步:IKAnalyzer的配置文件;在Tomcat的webapps/solr/WEB-INF/下创建classes目录,将IKAnalyzer.cfg.xml、ext_stopword.dic  mydict.dic  copy到 Tomcat的webapps/solr/WEB-INF/classes。
注意:ext_stopword.dic 和mydict.dic必须保存成无BOM的utf-8类型。(这是由于中文分词器的编码的要求)
第三步:修改schema.xml文件
修改schema.xml文件;修改Solr的schema.xml文件,添加FieldType,注意TextFiled会自动分词,而String则不会自动分词,所以为了查询准确,选用了前者:
<fieldType name="text_ik" class="solr.TextField">
  <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>

class必须为solr中包含的类,name可以根据需要自行更改。分析器也需要注意,也是需要与solr中包含的分析器。

第四步:设置业务系统Field;设置业务系统Field,

<field name="item_title" type="text_ik" indexed="true" stored="true"/>
<field name="item_sell_point" type="text_ik" indexed="true" stored="true"/>
<field name="item_price"  type="long" indexed="true" stored="true"/>
<field name="item_image" type="string" indexed="false" stored="true" />
<field name="item_category_name" type="string" indexed="true" stored="true" />
<field name="item_desc" type="text_ik" indexed="true" stored="false" />

<field name="item_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>
<copyField source="item_title" dest="item_keywords"/>
<copyField source="item_sell_point" dest="item_keywords"/>
<copyField source="item_category_name" dest="item_keywords"/>
<copyField source="item_desc" dest="item_keywords"/>
这样到这里我们的中文分词器和solr就整合在一起了。同时根据我们业务所选的字段,也分别进行了分词的设置,到这里我们的solr安装以及整合中文分词器就结束了。

猜你喜欢

转载自blog.csdn.net/qq_18870127/article/details/80638288