给Solr添加自己的分词器,mmseg4j
1、下载mmseg4j-1.8.5
2、在Solr的web项目的lib文件夹中加入mmseg4j-all-1.8.5.jar包
3、在 solr的 schema.xml 中定义 field type如:
<fieldType name="textComplex" class="solr.TextField" > <analyzer> <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex" dicPath="dic"/> </analyzer> </fieldType> <fieldType name="textMaxWord" class="solr.TextField" > <analyzer> <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="max-word" dicPath="dic"/> </analyzer> </fieldType> <fieldType name="textSimple" class="solr.TextField" > <analyzer> <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="simple" dicPath="dic"/> </analyzer> </fieldType>
dicPath 指定词库位置(每个MMSegTokenizerFactory可以指定不同的目录,当是相对目录时,是相对 solr.home 的目录),dic要放在solr.home目录下,把mmseg4j-1.8.5\data下的文件全拷贝到dic目录,mode 指定分词模式(simple|complex|max-word,默认是max-word)。
如果不知道solr.home在哪里,可以打开项目
上图圈着的就看出来了,把dic字典文件放到该文件夹下,即我这里的dic目录是
E:\JAVA\MyEclipse 8.6\demo\multicore\core0\dic
4、测试,点击上图中看到的
输入测试,用我们前面定义的分词器textComplex
5、实战开发中,还要自定义field
在 solr的 schema.xml 中定义自己的 fields如:
<field name="my_title" type="textComplex" indexed="true" stored="true" multiValued="true"/>
<field name="my_content" type="textComplex" indexed="true" stored="true" multiValued="true"/>
6、在开发java文件中应用
doc.addField("my_title", "this is test,my doc sys goto sc ood");
doc.addField("my_content", "我爱中国,中国人民爱我,天安门广场");