一、前言
在上一篇博客中,小编向大家深入的介绍了一下搜索引擎,稍微提出了Solr。封装及扩展性较好,提供了较为完备的解决方案,因此在门户社区中采用此方案,后期加入Compass方案。 基于这些性能优势,在一些门户网站上,使用Solr进行站内搜索还是比较高效的。下面就向大家介绍一下如何搭建一个单机版的Solr服务。
二、环境介绍
Linux ,小编使用的Centos7
jdk
tomcat
三、搭建过程
3.0 上传文件
3.1 安装jdk
a、下载jdk并上传到/usr/java目录
jdk7下载地址为:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 选择对应的linux版本,下载rpm文件。这里选择的是jdk-7u79-linux-x64.rpm。在usr下建立java文件夹,并上传到Linux的/usr/java目录下(java目录不存在则进行创建)。
b、解压安装
运行如下命令进行解压
rpm -ivh 文件名称
c、配置profile文件
运行如下命令:
vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_131
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
保存之后,运行如下命令使配置生效
source /etc/profile
检查jdk是否安装成功,运行如下命令
java -version
3.2 安装tomcat
解压tomcat
tar -zxf apache-tomcat-7.0.47.tar.gz
在usr/local路径下建立solr/tomcat文件夹,向/usr/local/solr/tomcat中拷贝一份tomcat
cp apache-tomcat-7.0.47 /usr/local/solr/tomcat -r
3.3 解压solr压缩包
解压solr
tar -zxf solr-4.10.3.tgz.tgz
把dist/solr-4.10.3.war部署到tomcat下。
cp solr-4.10.3.war /usr/local/solr/tomcat/webapps/solr.war
3.4 启动tomcat解压拷贝的war包
启动tomcat解压拷贝的war包,注意: tomcat 运行的前提是要有jdk
./startup.sh
3.5 需要把/root/solr-4.10.3/example/lib/ext目录下的所有的jar包添加到solr工程中
cp * /usr/local/solr/tomcat/webapps/solr-4.10.3/WEB-INF/lib/ -r
3.6 创建solrhome
把/root/solr-4.10.3/example/solr文件夹复制一份作为solrhome。
创建solrhome
cp -r solr /usr/local/solr/solrhome
Schema.xml 定义了所有的域
Solrconfig.xml 定义了所有的handeler
3.7 修改tomcat下solr的web.xml
告诉solr服务solrhome的位置。需要修改web.xml
3.8 配置中文分析器
a.把IKAnalyzer依赖的jar包添加到solr工程中。把分析器使用的扩展词典添加到classpath中。
cp IKAnalyzer2012FF_u1.jar /usr/local/solr/tomcat/webapps/solr/WEB-INF/lib/
b.需要自定义一个FieldType。Schema.xml中定义。可以在FieldType中指定中文分析器。
<fieldType name="text_ik" class="solr.TextField">
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
c.自定义域
指定域的类型为自定义的FieldType。
举一个例子:比如我们使用的sql语句是这样的
SELECT a.id,a.title,a.sell_point,a.price,a.image,b.`name` category_name,c.item_desc FROM tb_item a LEFT JOIN tb_item_cat b ON a.cid = b.id LEFT JOIN tb_item_desc c ON a.id = c.item_id WHERE a.`status` = 1
需要配置的代码:
<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"/>
3.9 启动tomcat
输入访问的网址:http://192.168.137.13:8080 ,访问效果如下:
四、小结
solr的单机搭建过程还是比较简单的, 使用也是比较方便的,操作流程。另外就是注意要关闭防火墙或者是开启指定的端口。然后别的就没有什么了。