30分钟搭建solr搜索引擎

solr是一个底层由java编写的开源搜索引擎,性能强悍,配置灵活,API丰富,具有可视化前端面板,调试方便,但安装过程较为复杂且遇到过不少坑,下面就总结一下安装过程

安装环境:centos7

1.下载solr安装包

wget http://mirrors.shuosc.org/apache/lucene/solr/7.2.1/solr-7.2.1.zip

2.解压 unzip solr-7.2.1.zip

3.安装java环境

3.1 查看是否安装

java -version

如果已经安装,则移除旧版本

yum remove java-x.x.x-openjdk

3.2安装

查看可安装列表

yum -y list java*

选择版本安装所有包

yum install java-1.8.0-openjdk*

3.3测试是否成功

4.启动solr

mv solr-7.2.1 solr7.2.1

cd solr7.2.1

bin/solr start -force

5.开启8983防火墙端口

firewall-cmd --zone=public --add-port=8983/tcp --permanent

systemctl restart firewalld

6.访问 8983端口

如无法响应,首先排查端口开启问题,阿里云等云服务器需要将8983端口添加到入站安全组

至此,solr安装成功

7.安装IK分词

由于solr不支持中文分词,所以要安装IK分词包来解决query分词,索引分词等问题

7.1 下载IK包

链接: https://pan.baidu.com/s/1smrpBOx 

密码: irdx

7.2 解压 unzip ikanalyzer-solr6.5.zip

7.3 复制到指定目录

7.3.1.将两个jar包复制到solr安装目录的lib目录下

cp *jar /usr/local/solr/solr7.2.1/server/solr-webapp/webapp/WEB-INF/lib/

7.3.2新建classes目录

mkdir /usr/local/solr/solr7.2.1/server/solr-webapp/webapp/WEB-INF/classes

7.3.2将xml文件复制到classes下

cp IKAnalyzer.cfg.xml /usr/local/solr/solr7.2.1/server/solr-webapp/webapp/WEB-INF/classes/

7.3.4查看xml文件,在classes目录配置ext.dic stopword.dic字典

7.4 配置IK分词

vim /usr/local/solr/solr7.2.1/server/solr/seo/conf/managed-schema

这里稍微解释一下,field的name属性即为索引字段,type为字段类型,这里我们写为刚刚安装的text_ik, indexed为是否索引,stored为是否排序(id字段为ture,113行已经有了),假设你数据库有一堆数据,分为title和content两个字段,那么你按照如图所示配置即可,再往下为IK分词的配置,直接复制即可。

<!-- my field -->

<field name="title" type="text_ik" indexed="true"  stored="false"/>

<field name="content" type="text_ik" indexed="true"  stored="false"/>

<!-- IK分词器 -->

<fieldType name="text_ik" class="solr.TextField">

<analyzer type="index">

<tokenizer class="org.apache.lucene.analysis.ik.IKTokenizerFactory" useSmart="true"/>

</analyzer>

<analyzer type="query">

<tokenizer class="org.apache.lucene.analysis.ik.IKTokenizerFactory" useSmart="true"/>

</analyzer>

</fieldType>

7.5 重启solr(无论新增包和修改配置,都不要忘记重启)

/usr/local/solr/solr7.2.1/bin/solr restart -force

8.开始使用solr

8.1新建core

core可以理解为一个项目

bin/solr create -c seo -force

8.2到前端查看IK分词是否生效

8.2.1选择core

8.2.2 点击Analysis ,选择text_ik

如果出现text_ik则IK分词安装成功,否则失败。

8.2.3 检查分词情况

8.2.4检查字典加载情况

“三星”是个品牌名称被单独切了出来,并没有切出来“星星”,“吗”也被去掉了

8.3添加索引

8.3.1solr添加有三种方法

1.通过面板的Dataimport进行数据导入

2.通过Documents手动添加

3.通过API添加

第1种方法不赘述,个人觉得配置麻烦且使用不灵活,

第2种方法我直接使用了python的API,详情见:http://blog.csdn.net/sinat_33455447/article/details/56848791

注意不要逐条提交,合适的方法是将数据分组添加,比如10000一组,这样更高效

8.3.2 通过Documents手动添加

一般用来做测试用,点击Documents,选择你要提交的数据形式,这里以json为例子

8.4.搜索测试

点击query,q输入query,df指定搜索字段

请求红框内的url可以直接拿到搜索结果数据,并可以使用wt选项指定返回的数据类型

精力所限仍然有很多的细节和关键参数在这里一言难尽,大家多多转发或者加下方我的微信号向我提问,你们的支持才是我分享的动力:)

猜你喜欢

转载自my.oschina.net/afengzxf/blog/1624076