`

Spring MVCD框架中调用HanLP分词的方法

阅读更多

 

项目简要:关于java web的一个项目,用的Spring MVCd 框架。鉴于参与此次项目的人中并不是所人都做的Spring,为了能够提高效率,建议大家是先抛开SPring来写自己负责的模块,最后再把各个模块在Spring里面集成。

项目里有一个文本分析的模块是一个同学用hanlp写的,由于在最后集成的时候直接使用maven添加的依赖,但最终测试时无法通过。后经分析发现她坐了实体识别,是自己改了hanlp的词典,手动加了很多词,而且在后期版本的迭代中还有可能继续改了hanlp的词典,这就意味着不能用maven直接导入仓库里的包了,只有将修改后的data文件放到本地,然后指定路径给hanlp。

网上有一些解决的方法,但都是在项目部署的时候,把hanlp的词典数据放到服务器上一个固定位置上,然后再配置hanlp的配置文件,指定一个固定位置。这种方法虽然比较直接,但是并不能够把hanlp的词典数据与整个项目打包到一起,后期的管理也比较麻烦。倘若把数据直接作为项目的资源文件,部署到Tomcat上后无论怎么在配置里写路径都会提示找不到词典文件。

在分析了HanLP的issue之后,发现这个项目支持自定义读写文件的IO类。在一个将词典数据放到HDFS上的一个blog启发下,尝试通过重写一个IOAdapter类,使用读写静态资源文件的方法读取词典数据了,这样不就可以把data跟项目打包到一起了。

代码如下:

1| package com.car.util.nlp;

2|

3| import com.hankcs.hanlp.corpus.io.IIOAdapter;

4| import org.springframework.core.io.ClassPathResource;

5| import java.io.*;

6|

7| public class ResourcesFileIoAdapter implements IIOAdapter{

8|   @Override

9|    public InputStream open(String path) throws IOException {

  10|      ClassPathResource resource = new ClassPathResource(path);

  11|     InputStream is = new FileInputStream(resource.getFile());

  12|      return is;

  13|  }

  14|  @Override

  15|  public OutputStream create(String path) throws IOException{

  16|      ClassPathResource resource = new ClassPathResource(path);

  17|      OutputStream os = new 

18| FileOutputStream(resource.getFile());

  19|      return os;

  20|   }

21| }

 

整好了之后把data文件夹和hanlp.properties放到项目的资源文件夹里,在配置文件里修改一下路径和IOAdapte:

1| root=

2|

3| IOAdapte=com.car.util.nlp.ResourcesFileIoAdapter

 

分享到:
评论

相关推荐

    springmvcd1

    标题“springmvcd1”可能指的是一个关于Spring MVC框架的讨论或者教程,Spring MVC是Spring框架的一个重要模块,专门用于构建Web应用程序。Spring MVC通过提供模型-视图-控制器(MVC)架构模式,帮助开发者将业务...

    Spring.Batch批处理框架

    Spring Batch 是一个轻量级的、完善的批处理框架,旨在帮助企业建立健壮、高效的...如果需要使用调用框架,在商业软件和开源软件中已经有很多优秀的企业级调度框架(如 Quartz、Tivoli、Control-M、Cron 等)可以使用。

    spring cloud feign实现远程调用服务传输文件的方法

    在 upload-client 项目中,我们使用 Spring Boot 框架来创建一个调用 upload-service 服务的客户端。 ```java @RestController @RequestMapping("/ftp") @Api(description = "文件上传控制") public class ...

    使用spring远程调用服务端接口实现WebService功能

    它是Spring框架中的一个关键组件,用于将普通的Java方法暴露为可以通过HTTP请求调用的服务。它基于HTTP协议,而不是SOAP或XML-RPC,因此更加轻量级且易于使用。HttpInvokerServiceExporter会自动处理请求的序列化和...

    springcloud 分布式框架搭建

    在本文中,我们将深入探讨 SpringCloud 的核心组件以及如何搭建一个基本的分布式框架。 1. **Eureka:服务发现** Eureka 是 SpringCloud 的服务注册与发现组件,它允许微服务之间互相发现和通信。服务提供者在...

    一个Spring框架上的方法调用监视器

    NULL 博文链接:https://kevinkevin1979.iteye.com/blog/875408

    spring远程调用简单实例

    在IT行业中,Spring框架是Java开发中的一个核心组件,它为构建高质量的、松散耦合的、可测试的应用程序提供了强大的支持。Spring框架的一大特色就是其远程调用能力,这使得分布式系统的开发变得更加便捷。本实例将...

    solr在SSM框架中使用(支持中文分词查询)

    Solr是中国最流行的开源全文搜索引擎之一,它在Java环境下运行,并能很好地集成到Spring、SpringMVC和MyBatis组成的SSM(Spring、SpringMVC、MyBatis)框架中,用于实现高效、可扩展的搜索功能。在这个项目中,我们...

    myBatis+spring+cxf 框架简单整合(包jar)

    本案例中,我们将讨论如何将MyBatis、Spring和CXF这三个关键框架整合在一起,以构建一个功能强大的Web服务。首先,让我们逐一了解这些框架的核心概念。 MyBatis是一个轻量级的Java持久层框架,它提供了SQL映射框架...

    基于Spring Boot框架的API开放调用平台.zip

    基于Spring Boot框架的API开放调用平台 内容概要 本项目是一个基于Spring Boot框架的API开放调用平台,旨在为企业、个人提供统一的接口开放服务。平台支持管理员接入并发布接口,用户可以登录注册、开通接口调用...

    如何在Spring框架中使用RMI技术.zip

    在Spring框架中,远程方法调用(Remote Method Invocation, RMI)是一种强大的工具,它允许在不同的Java虚拟机(JVM)之间透明地调用对象的方法。RMI结合了Spring的强大功能,可以构建分布式系统,使得组件之间的...

    spring-cloud-alibaba+dubbo+nacos内部服务调用

    Spring Cloud Alibaba、Dubbo和Nacos都是在这一领域中广泛使用的开源框架。本篇文章将深入探讨如何将这三个组件整合在一起,实现内部服务的有效调用。 首先,Spring Cloud Alibaba是阿里巴巴提供的一套微服务解决...

    springMVC+spring+Hibernate框架

    Spring MVC、Spring 和 Hibernate 是Java开发中非常流行的三大框架,它们共同构成了企业级Web应用的基础架构。Spring MVC作为Spring框架的一部分,主要负责处理HTTP请求和响应,提供模型-视图-控制器(MVC)设计模式...

    Spring源码文档和方法调用流程图

    10. **方法调用流程图**:通常,这些流程图会详细描绘Spring框架中关键组件之间的交互过程,比如AOP的代理创建、事务传播、请求处理等,对于理解和优化Spring应用的性能至关重要。 通过深入学习Spring源码,开发者...

    Spring框架.ppt

    核心容器。提供Spring框架的基本功能,其主要组件是BeanFactory,是工厂模式的实现。...Spring AOP 模块直接将面向方面编程的功能集成到Spring框架中。它为基于Spring 应用程序的对象提供了事务管理服务。

    以Spring Boot框架为载体,通过集成hanLP、neo4j、spark-mllib实现基于电影知识图谱的简易问答系统

    标题中的“以Spring Boot框架为载体,通过集成hanLP、neo4j、spark-mllib实现基于电影知识图谱的简易问答系统”揭示了一个利用现代技术栈构建智能问答系统的项目。这个系统结合了多个关键技术,包括Spring Boot、...

    word源码java-datiba:基于springboot的在线答题系统,使用HanLP分词器分词,结合mysql自带的全文搜索功能实现问题

    一个基于springboot搭建的项目,项目包括完整的前后台,前台部分功能需要用户登录后才能使用,比如提问、积分兑换、举报等等,前台的问题搜索功能,使用HanLP分词器分词,搭配MySQL自带的全文搜索功能,实现问题的...

    SpringCloud-Demo框架

    SpringCloud-Demo框架是...总之,SpringCloud-Demo框架是一个全面展示Spring Cloud功能的实践案例,它涵盖了微服务架构中的多个关键组件,帮助开发者更好地理解和运用Spring Cloud,提升微服务的开发效率和系统稳定性。

Global site tag (gtag.js) - Google Analytics