前不久公司打算做商城,综合网上的各种案例然后打算使用搜索框架实现产品按关键字搜索功能,遗憾的是考虑到时间周期和运维成本最终没使用,solr就成了给自己定的学习内容,来看看我的学习成果吧,如有不全面之处请大家谅解或指出
一 环境准备
1 tomcat8和jdk1.8
2 solr的windows版war包或zip,这里使用的是4.10的版本
solr版本不同搭建环境的步骤方法可能存在差异,下载地址稍后提供
这里的war包可以直接复制出来放在tomcat的webapps目录,上级目录里的solr文件夹单独复制出来放在d:\javaenv下面(目录根据实际需要随意指定)
到这里环境搭建就完成一半了,下面需要找到部署到tomcat的solr的web.xml,对下面这里进行修改
红色框里的目录就是上面solr文件夹的目录了,接下来直接启动tomcat就可以了,启动后从浏览器访问就能看到这样的界面了
到这里solr环境就OK了,下面就是一些需要注意的配置项和API层面的问题了
二 IK分词器的安装和自定义扩展词典
1 安装IK分词器
IK分词器之前在lucene配合微信被动回复消息已经说过,solr本身不能很好的对中文进行分词,因此需要安装IK,只要把IK的jar包放在webapps下面的 solr\WEB-INF\lib下面即可
jar添加完毕后还需要在schema.xml中加入以下配置:
<fieldType name="text_ik" class="solr.TextField">
<analyzer type="index" isMaxWordLength="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
<analyzer type="query" isMaxWordLength="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
之后不要忘记重启一下tomcat,接下来我们使用IK测试一下分词的效果
IK分词器安装成功后可根据实际需要自定义词典或停用词典,先编辑红圈里的文件并新增词典文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IK Analyzer 扩展配置</comment>
<!--用户可以在这里配置自己的扩展字典 -->
<entry key="ext_dict">ext.dic;</entry>
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords">stopword.dic;</entry>
</properties>
dic文件直接把自己扩展或者停用的词典写进去就行,一般一行一个即可
接下来是比较容易出问题的地方,solr的schema.xml文件里的索引数据类型配置如果是字符串一般建议改成text_general,防止搜索时分词器分词不符合要求
到这里未知solr环境搭建就结束了,后面就是API级别的应用了,下一篇博客将通过一个小例子来说明solr的简单使用,有兴趣的可以看一看。