2019独角兽企业重金招聘Python工程师标准>>>
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分词的配置,直接复制即可。
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选项指定返回的数据类型
精力所限仍然有很多的细节和关键参数在这里一言难尽,大家多多转发或者加下方我的微信号向我提问,你们的支持才是我分享的动力:)