给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", "我爱中国,中国人民爱我,天安门广场");

 

posted @ 2012-05-23 22:42  浪浪仔  阅读(867)  评论(0编辑  收藏  举报