作者: | 来源:互联网 | 2023-09-18 15:21
一.Solr使用中文分析器IK-analyzer时报错java.lang.AbstractMethodError错误如下图所示原因是Solr的版本和IK-analyzer的版本不
一.Solr使用中文分析器IK-analyzer时报错java.lang.AbstractMethodError
错误如下图所示
原因是Solr的版本和IK-analyzer的版本不匹配,IK-analyzer版本过低,现在大家能够在网上下到的IK-analyzer版本一般都是IKAnalyzer2012FF_u1,这个版本已经相当老旧了,这里提供一个较新版本的IK-analyzer:ik_analyzer_solr6
更换Jar后
二.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目录下
3.2 配置一个FieldType,制定使用IKAnalyzer
修改schema.xml文件(版本不同文件名称可能不同,6以上版本应该是managed-schema文件)
修改Solr的schema.xml文件,添加FieldType:
<fieldType name&#61;"text_ik" class&#61;"solr.TextField"><analyzer class&#61;"org.wltea.analyzer.lucene.IKAnalyzer"/>
fieldType>
3.3 配置业务域&#xff0c;type制定使用自定义的FieldType
设置业务系统Field&#xff0c;在schema.xml文件中添加&#xff1a;
"item_title" type&#61;"text_ik" indexed&#61;"true" stored&#61;"true"/>
"item_sell_point" type&#61;"text_ik" indexed&#61;"true" stored&#61;"true"/>
"item_price" type&#61;"long" indexed&#61;"true" stored&#61;"true"/>
"item_image" type&#61;"string" indexed&#61;"false" stored&#61;"true" />
"item_category_name" type&#61;"string" indexed&#61;"true" stored&#61;"true" />
"item_keywords" type&#61;"text_ik" indexed&#61;"true" stored&#61;"false" multiValued&#61;"true"/>
"item_title" dest&#61;"item_keywords"/>
"item_sell_point" dest&#61;"item_keywords"/>
"item_category_name" dest&#61;"item_keywords"/>