Solr6适配自定义升级版mmseg4j

摘要:上一篇,由于Solr6在使用mmseg4j中文分词时,Solr会出现getInstanceDir()NoSuchMethodError异常,需要修改mmseg4j源码,使之兼容。如果还未配置好mmseg4j,请到Solr6配置中文分词库mmseg4j

下载源码

  1. 开源地址:https://github.com/chenlb/mmseg4j-solr
  2. 环境与工具:JDK8,Eclipse4.5(带有git插件,Maven插件)
  3. 引入项目:Import – > Git – > Projects from Git – > Clone URI
    填入URI:https://github.com/chenlb/mmseg4j-solr ,其他都用默认值,用户名、密码留空
    Source Git Repository
    Next – > Next – > Import as general project
    Import project
  4. 转换成Maven项目:工程mmseg4j-solr 右键 – > Configure – > Convert to Maven Project – > 等待转换完成,要下载很多Jar包,需要比较长时间
    Configure

  5. 修改pom.xml文件:升级solr版本为solr6,更改mmseg4j为2.3.2-SNAPSHOT。我还修改了maven-plugins的版本,因为项目里的版本我未能从中央仓库找到。
    pom.xml

修改源码

  1. 等待Eclipse自动build项目,发现错误:
    这里写图片描述
  2. 改源码:将Solr6已经改变的API改成srl.getInstancePath(),错误消失。
  3. 打包:项目上右键 – > Run As – > Maven Build(目标填:clean install)
  4. 发现错误:Solr no longer supports forceful unlocking via the 'unlockOnStartup' option. 发现在solrconfig.xml的第63行,有这样的配置<unlockOnStartup>true</unlockOnStartup>,而如果为true,在启动的时候不锁定任何持有写或者提交的锁。 这打败了允许多个程序安全访问lucene索引并且应该小心使用的理论依据。 因此Solr6已经不允许这样的操作,我来把它改为<unlockOnStartup>false</unlockOnStartup>,当然,最简单的办法就是把它注释掉。
  5. 打包:
  6. 发现问题:Unsupported major.minor version,Java版本不对应,Solr6需要JDK8才可以。
  7. 修改:Java CompilerJava Build Path为1.8版本的Java。
  8. 打包:
  9. 发现问题:SolrCore 'mmseg4j_core' is not available due to init failure: Error loading class 'org.apache.solr.handler.admin.AdminHandlers',有一个包找不到,去看看源码。
    Solr5
    Solr6
  10. 对比源码,发现,Solr5.0开始,这个AdminHandlers已经被废弃了(类名上有删除线),并且在Solr6.0以后,这个类直接被移除了,所以,已经找不到这个AdminHandlers了。
  11. 修改:找到使用AdminHandlers的地方,在solrconfig.xml的第240行,发现<requestHandler name="/admin/" class="org.apache.solr.handler.admin.AdminHandlers" />,由于这个Handler 已经不再用,于是将这行代码注释。
  12. 打包
  13. Testcase测试通过,在项目target目录下生成了需要的jar包,替换原来的mmseg4j-solr-2.3.0.jar,大功告成!

总结,升级别人的jar包还是很折腾的,好在,这个项目已经开源,需要修改的地方也不多。如果你不愿意折腾,我把打包好的jar文件放在了CSDN上,包含mmseg4j-solr-2.3.2.jarmmseg4j-core-1.10.0.jar点击下载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cj96248

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值