到了分词这部,相信你已经把solr整合到tomcat里了,没有的话看我前面的文章有讲到。
我这里使用的是mmseg4j-1.9.1版本的。
http://down.51cto.com/data/1275975这个是下载zip的链接。
解压后把mmseg4j-1.9.1 文件夹下dist下的三个jar包拷贝到tomcat/webapps/solr/WEB-INF/lib下。
在schema.xml下配置分词器。
<types> <fieldtype name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/> <fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/> <fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/> <fieldType name="textComplex" class="solr.TextField" > <analyzer> <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex" /> </analyzer> </fieldType> <fieldType name="textMaxWord" class="solr.TextField" > <analyzer> <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="max-word" /> </analyzer> </fieldType> <fieldType name="textSimple" class="solr.TextField" > <analyzer> <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="simple" /> </analyzer> </fieldType> </types>
<fields> <field name="id" type="int" indexed="true" stored="true" /> <field name="gender" type="string" indexed="true" stored="true" /> <field name="name" type="textComplex" indexed="true" stored="true" /> <field name="major" type="textComplex" indexed="true" stored="true" /> <field name="grade" type="textComplex" indexed="true" stored="true" /> <field name="_version_" type="long" indexed="true" stored="true"/> </fields>
<copyField source="major" dest="name"/> <copyField source="grade" dest="name"/>
然后进入solr的页面。
分词的结果页面却是这样的。出现这样的错误:TokenStream contract violation: reset()/close() call missing, reset() called multiple times, or subclass does not call super.reset(). Please see Javadocs of TokenStream class for more information about the correct consuming workflow.然后通过查找网上资料。是源代码出错了。这个mmseg4j-1.9.1是一个maven项目来的。通过mawen导入项目修改下面的代码。
添加注释的代码super.reset();然后clean一下,install一下,target会生成一个mmseg4j-analysis-1.9.2-SNAPSHOT.jar文件,将他复制到tomcat/webapps/solr/WEB-INF/lib下,并改名为mmseg4j-analysis-1.9.2.jar,删除mmseg4j-analysis-1.9.1.jar,或者改名为mmseg4j-analysis-1.9.1.jar覆盖掉原来的jar。
重启tomcat,再测试,结果出来了:
分词成功了。