Solr分析器IK-analyzer配置及错误java.lang.AbstractMethodError解决

一.Solr使用中文分析器IK-analyzer时报错java.lang.AbstractMethodError

错误如下图所示

Solr分析器IK-analyzer配置及错误java.lang.AbstractMethodError解决_第1张图片

原因是Solr的版本和IK-analyzer的版本不匹配,IK-analyzer版本过低,现在大家能够在网上下到的IK-analyzer版本一般都是IKAnalyzer2012FF_u1,这个版本已经相当老旧了,这里提供一个较新版本的IK-analyzer:ik_analyzer_solr6

更换Jar后

Solr分析器IK-analyzer配置及错误java.lang.AbstractMethodError解决_第2张图片

二.IK-analyzer中文分析器

IKAnalyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。它是以开源项目Lucene为应用主体的,结合词典分词和文法分析算法的中文分词组件。新版本的IKAnalyzer3.0则发展为 面向Java的公用分词组件,独立于Lucene项目,同时提供了对Lucene的默认优化实现。

使用Solr一般都会配置中文分析器,IKAnalyzer是应用最广的中文分析器,但是在网上能下载到IKAnalyzer版本都比较旧,这是因为这是个开源项目而且原作者好像不太想维护了,所以Solr不断更新,IKAnalyzer一直不更新,渐渐地IKAnalyzer就不能用了

不过,好在IKAnalyzer的作者把项目发布到了GitHub上,虽然没有见到IKAnalyzer的最新的Jar包但是这个项目还是更新了,而且Solr6可以使用,我fork了这个项目并把它打成了jar包,链接放到了上边

三.IK-analyzer的配置

3.1 把中文分析器添加到工程中。

把ik-analyzer-solr6.jar文件添加到Tomcat中的solr工程的lib目录下
把扩展词典文件ext_stopword.dic、配置文件IKAnalyzer.cfg.xml放到solr工程的WEB-INF/classes目录下

Solr分析器IK-analyzer配置及错误java.lang.AbstractMethodError解决_第3张图片

3.2 配置一个FieldType,制定使用IKAnalyzer

修改schema.xml文件(版本不同文件名称可能不同,6以上版本应该是managed-schema文件)
修改Solr的schema.xml文件,添加FieldType:

<fieldType name="text_ik" class="solr.TextField">
  <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
fieldType>

3.3 配置业务域,type制定使用自定义的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"/>

你可能感兴趣的:(Solr&Luncene)