错误如下图所示
原因是Solr的版本和IK-analyzer的版本不匹配,IK-analyzer版本过低,现在大家能够在网上下到的IK-analyzer版本一般都是IKAnalyzer2012FF_u1,这个版本已经相当老旧了,这里提供一个较新版本的IK-analyzer:ik_analyzer_solr6
更换Jar后
IKAnalyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。它是以开源项目Lucene为应用主体的,结合词典分词和文法分析算法的中文分词组件。新版本的IKAnalyzer3.0则发展为 面向Java的公用分词组件,独立于Lucene项目,同时提供了对Lucene的默认优化实现。
使用Solr一般都会配置中文分析器,IKAnalyzer是应用最广的中文分析器,但是在网上能下载到IKAnalyzer版本都比较旧,这是因为这是个开源项目而且原作者好像不太想维护了,所以Solr不断更新,IKAnalyzer一直不更新,渐渐地IKAnalyzer就不能用了
不过,好在IKAnalyzer的作者把项目发布到了GitHub上,虽然没有见到IKAnalyzer的最新的Jar包但是这个项目还是更新了,而且Solr6可以使用,我fork了这个项目并把它打成了jar包,链接放到了上边
把ik-analyzer-solr6.jar文件添加到Tomcat中的solr工程的lib目录下
把扩展词典文件ext_stopword.dic、配置文件IKAnalyzer.cfg.xml放到solr工程的WEB-INF/classes目录下
修改schema.xml文件(版本不同文件名称可能不同,6以上版本应该是managed-schema文件)
修改Solr的schema.xml文件,添加FieldType:
<fieldType name="text_ik" class="solr.TextField">
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
fieldType>
设置业务系统Field,在schema.xml文件中添加:
"item_title" type="text_ik" indexed="true" stored="true"/>
"item_sell_point" type="text_ik" indexed="true" stored="true"/>
"item_price" type="long" indexed="true" stored="true"/>
"item_image" type="string" indexed="false" stored="true" />
"item_category_name" type="string" indexed="true" stored="true" />
"item_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>
"item_title" dest="item_keywords"/>
"item_sell_point" dest="item_keywords"/>
"item_category_name" dest="item_keywords"/>