配置solr服务器
1.登录solr的官方网站下载最新版本,目前是5.5.0。http://lucene.apache.org/solr/downloads.html
2.linux下载tgz类型,windows系统下载solr-5.5.0.zip
3.解压之后打开文件夹,在此目录下打开cmd命令窗口 bin\solr start 默认是8983端口,使用jetty 此时,打开浏览器访问 http://localhost:8983/solr 就可以看到solr服务器已经启动成功
4.配置核心索引core 在cmd窗口 bin/solr create -c good ,“good”为要创建的core的名字,此时solr服务器的索引core建立完毕
5.为该core:good添加索引,java使用solrj为该core添加索引 具体实现可以参照/trade/src/main/java/com/echin/query/SolrWeb.java 至此,solr服务器基本配置完毕。
为solr配置中文分词器
solr服务器默认是不开启中文分词的,这时需要配置中文分词器,目前比较流行的IKAnalyzer分词器、mmseg4j分词器、还有solr自带的分词器solr.SmartChineseSentenceTokenizerFactory
本项目配置的solr-5.4.1 和 mmseg4j-2.3.0版本,下面介绍如何配置mmseg4j-2.3.0到solr-5.4.1上
1.首先需要登录mmseg4j的官方网站 https://github.com/chenlb/mmseg4j-solr 下载最新版本 2.3.0
2.下载完毕之后,把解压的mmseg4j-core-1.10.0.jar和mmseg4j-solr-2.3.0.jar放到solr服务器所在的\solr-5.4.1\server\solr-webapp\webapp\WEB-INF\lib文件夹下
3.吧下面一段话复制到 你的配置文件managed-schema中
<fieldtype name="textComplex" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex" dicPath="/dic"/>
</analyzer>
</fieldtype>
<fieldtype name="textMaxWord" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="max-word" />
</analyzer>
</fieldtype>
<fieldtype name="textSimple" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="simple" dicPath="G:\ymy\solr\solr-5.4.1\server\solr\good\dic" />
</analyzer>
</fieldtype>
4.现在mmseg4j配置成功后,加入你有一个字段需要使用这种分词模式,在加上下面一句话
<field name="title" type="textComplex" multiValued="false" indexed="true" stored="true"/>
为中文分词器添加扩展词库
dicPath 参数 - 设置自定义的扩展词库,支持相对路径(相对于 solr_home).如果对路径不是很熟悉建议写绝对路径
mode 参数 - 分词模式。
至此mmseg4j中文分词器配置完毕
solr服务器配置完毕,mmseg4j也配置到服务器中,剩下的关键一步是如何让solr根据我们自己需要的关键字进行搜索,比如“爱他美”、“喜宝”、“花裤衩”等
1、首先找到mmseg4j-core-1.10.0.jar,把jar包下的data文件夹下的那个三个文件,chars.dic,units.dic,words.dic
2.把这三个文件拷到G:\ymy\solr\solr-5.4.1\server\solr\good\dic下
3.把你想要作为关键字的词语,如“爱他美”等添加到words.dic中,一个词语一行,添加下一个,敲回车