当前位置: 首页
AI教程
Elasticsearch对外分词服务实践与接入方案

Elasticsearch对外分词服务实践与接入方案

时间:2026-08-12
转载

1、问题引出在实际项目开发与业务应用场景中,经常会遇到统计一句话、一段文本或一篇文章词频的需求, 而词频统计的前提,首先就是要做好中文分词。 常见的中文分词方案包括: 1、IK分词——https: github com medcl elasticsearch-analysis-ik 2、结巴分词—

1、问题引出

在实际项目开发与业务应用场景中,经常会遇到统计一句话、一段文本或一篇文章词频的需求,
而词频统计的前提,首先就是要做好中文分词。
常见的中文分词方案包括:

总结

1、IK分词——https://github.com/medcl/elasticsearch-analysis-ik
2、结巴分词——https://github.com/huaban/elasticsearch-analysis-jieba
3、ANSJ分词——https://github.com/NLPchina/elasticsearch-analysis-ansj
在真实开发过程中,完全可以基于这些中文分词工具再做一层封装,将其整理为统一接口或独立的分词服务来调用。
不过,换一个角度思考,这件事情未必一定要额外增加一层服务:是否可以直接借助Elasticsearch分词插件,把分词能力直接对外输出,作为中文分词服务使用?

2、可行性分析

1、 Elasticsearch处理中文内容时,倒排索引建立的前提就是先完成中文分词。
而在分词能力上,我们最常用的方案之一就是IK分词插件。

2、 在正常的Elasticsearch部署与系统设计阶段,通常都会提前确定分词器类型。
综合来看,借助Elasticsearch实现中文分词服务是完全可行的。

3、Elasticsearch中的DSL实现

GET test_index/_analyze{"analyzer":"ik_smart","text":"9年后,我还是没有跑出去 | 震后余生"}

返回结果如下:

{"tokens": [{"token": "9","start_offset": 0,"end_offset": 1,"type": "ARABIC","position": 0},{"token": "年后","start_offset": 1,"end_offset": 3,"type": "CN_WORD","position": 1},{"token": "我","start_offset": 4,"end_offset": 5,"type": "CN_WORD","position": 2},{"token": "还是","start_offset": 5,"end_offset": 7,"type": "CN_WORD","position": 3},{"token": "没有","start_offset": 7,"end_offset": 9,"type": "CN_WORD","position": 4},{"token": "跑出去","start_offset": 9,"end_offset": 12,"type": "CN_WORD","position": 5},{"token": "震后","start_offset": 15,"end_offset": 17,"type": "CN_WORD","position": 6},{"token": "余生","start_offset": 17,"end_offset": 19,"type": "CN_WORD","position": 7}]}

4、Elasticsearch Ja va接口实现

下面给出基于Jest5.3.3的接口实现示例。

/**@brief:获取分词结果接口*@param:待分词的文章/字符串*@return:不重复分词结果集(可根据实际业务场景二次开发)*@date:20180704*/public static String IK_TYPE = "ik_smart";public static Set getIkAnalyzeSearchTerms(String searchContent) {// 调用 IK 分词分词JestClient client = JestHelper.getClient();Analyze ikAnalyze = new Analyze.Builder().index(TEST_INDEX).analyzer(IK_TYPE).text(searchContent).build();JestResult result = null;Set keySet = new HashSet();try {result = client.execute(ikAnalyze);JsonArray jsonArray = result.getJsonObject().getAsJsonArray("tokens");int arraySize = jsonArray.size();for (int i = 0; i < arraySize;   i) {JsonElement curKeyword = jsonArray.get(i).getAsJsonObject().get("token");//Logger.info("rst = "   curKeyword.getAsString());keySet.add(curKeyword.getAsString());}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}return keySet;}

有了ja va接口之后,继续对外封装Restful API就会变得更加直接,也更便于在业务系统中统一调用Elasticsearch分词能力。

5、小结

充分挖掘Elasticsearch自身的分词特性,尽可能简化系统架构、提升开发效率,并优化实际业务场景,才是更高效的实践方式!

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
CAD零基础入门教程:坐标输入、图层管理与基础绘图命令

CAD零基础入门教程:坐标输入、图层管理与基础绘图命令

本文面向CAD零基础学习者,系统讲解坐标输入、图层管理与基础绘图命令的核心用法。通过分步实操与常见问题排查,帮助新手建立精确绘图习惯,掌握规范出图的基础能力。

时间:2026-09-01 16:53
CAD从入门到项目交付:绘图、标注、图块与实战工作流

CAD从入门到项目交付:绘图、标注、图块与实战工作流

掌握CAD的核心在于建立“画得准、标得清、复用快、交付稳”的工作流。本文提供从环境设置、高频命令组合、标注规范、图块标准化到项目分阶段交付的完整路径,帮助初学者避免常见返工陷阱,独立完成可检查、可复用、可打印的工程图纸。

时间:2026-09-01 16:52
Claude Code 登录指南:个人、Teams 与企业账号区分与授权步骤

Claude Code 登录指南:个人、Teams 与企业账号区分与授权步骤

本文详细解析 Claude Code 登录前的账号类型区分方法,涵盖个人订阅、Teams 席位与企业 Enterprise 席位的授权路径差异。提供终端登录命令、环境变量排查及常见异常处理步骤,帮助用户快速完成正确授权并避免登录路径混淆。

时间:2026-09-01 14:27
Claude Code 文件修改前的权限模式配置与命令审批指南

Claude Code 文件修改前的权限模式配置与命令审批指南

本文详细介绍Claude Code在修改文件前的权限模式配置方法,包括defaultMode可选值、permissions allow与deny规则设置、多层级配置文件管理以及 status验证技巧,帮助开发者安全高效地使用AI编程助手。

时间:2026-09-01 14:12
Claude Code接入VS Code后先测扩展和终端命令

Claude Code接入VS Code后先测扩展和终端命令

在VS Code中接入Claude Code后,建议优先验证扩展面板与集成终端两条入口。本文提供标准检查顺序、关键命令与常见故障排查路径,帮助你快速确认环境就绪,避免后续开发受阻。

时间:2026-09-01 14:10
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全