热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Solr6适配自定义升级版mmseg4j

摘要:接上一篇,由于Solr6在使用mmseg4j中文分词时,Solr会出现getInstanceDir()的NoSuchMethodError异常,需要修改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行,有这样的配置true,而如果为true,在启动的时候不锁定任何持有写或者提交的锁。 这打败了允许多个程序安全访问lucene索引并且应该小心使用的理论依据。 因此Solr6已经不允许这样的操作,我来把它改为false,当然,最简单的办法就是把它注释掉。
  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行,发现,由于这个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,点击下载。


推荐阅读
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • 使用ArcGIS for Java和Flex浏览自定义ArcGIS Server 9.3地图
    本文介绍了如何在Flex应用程序中实现浏览自定义ArcGIS Server 9.3发布的地图。这是一个基本的入门示例,适用于初学者。 ... [详细]
  • 本文深入解析了WCF Binding模型中的绑定元素,详细介绍了信道、信道管理器、信道监听器和信道工厂的概念与作用。从对象创建的角度来看,信道管理器负责信道的生成。具体而言,客户端的信道通过信道工厂进行实例化,而服务端则通过信道监听器来接收请求。文章还探讨了这些组件之间的交互机制及其在WCF通信中的重要性。 ... [详细]
  • 本文详细介绍了 com.apollographql.apollo.api.internal.Optional 类中的 orNull() 方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 我有一个从C项目编译的.o文件,该文件引用了名为init_static_pool ... [详细]
  • HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送www方式的数据。HTTP协议采用了请求响应模型。客服端向服务器发送一 ... [详细]
  • This feature automatically validates new regions using the AWS SDK, ensuring compatibility and accuracy. ... [详细]
  • 通过将常用的外部命令集成到VSCode中,可以提高开发效率。本文介绍如何在VSCode中配置和使用自定义的外部命令,从而简化命令执行过程。 ... [详细]
  • JUC(三):深入解析AQS
    本文详细介绍了Java并发工具包中的核心类AQS(AbstractQueuedSynchronizer),包括其基本概念、数据结构、源码分析及核心方法的实现。 ... [详细]
  • 解决Only fullscreen opaque activities can request orientation错误的方法
    本文介绍了在使用PictureSelectorLight第三方框架时遇到的Only fullscreen opaque activities can request orientation错误,并提供了一种有效的解决方案。 ... [详细]
  • 在软件开发过程中,经常需要将多个项目或模块进行集成和调试,尤其是当项目依赖于第三方开源库(如Cordova、CocoaPods)时。本文介绍了如何在Xcode中高效地进行多项目联合调试,分享了一些实用的技巧和最佳实践,帮助开发者解决常见的调试难题,提高开发效率。 ... [详细]
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 在安装并配置了Elasticsearch后,我在尝试通过GET /_nodes请求获取节点信息时遇到了问题,收到了错误消息。为了确保请求的正确性和安全性,我需要进一步排查配置和网络设置,以确保Elasticsearch集群能够正常响应。此外,还需要检查安全设置,如防火墙规则和认证机制,以防止未经授权的访问。 ... [详细]
  • 在过去,我曾使用过自建MySQL服务器中的MyISAM和InnoDB存储引擎(也曾尝试过Memory引擎)。今年初,我开始转向阿里云的关系型数据库服务,并深入研究了其高效的压缩存储引擎TokuDB。TokuDB在数据压缩和处理大规模数据集方面表现出色,显著提升了存储效率和查询性能。通过实际应用,我发现TokuDB不仅能够有效减少存储成本,还能显著提高数据处理速度,特别适用于高并发和大数据量的场景。 ... [详细]
author-avatar
不不不不不想你
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有