# ideaseg **Repository Path**: indexea/ideaseg ## Basic Information - **Project Name**: ideaseg - **Description**: 基于 NLP 技术 ( HanLP ) 实现的中文分词插件,准确度比常用的分词器高太多,同时提供 ElasticSearch 和 OpenSearch 插件。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: https://indexea.com - **GVP Project**: No ## Statistics - **Stars**: 211 - **Forks**: 46 - **Created**: 2023-01-06 - **Last Updated**: 2025-07-17 ## Categories & Tags **Categories**: segment **Tags**: ElasticSearch, openSearch, hanlp, 中文分词 ## README ## ideaseg `ideaseg` 是 [Indexea](https://indexea.com) 推出的一个基于最新的 [HanLP](https://github.com/hankcs/HanLP/tree/1.x) 自然语言处理工具包实现的中文分词器, 包含了最新的模型数据,同时移除了 HanLP 所包含的非商业友好许可的 [NeuralNetworkParser](https://github.com/hankcs/HanLP/issues/644) 相关代码和数据。 `HanLP` 相比其他诸如 `IK`、`jcseg` 等分词器而言,在分词的准确率上有巨大的提升,但速度上有所牺牲。 通过对 `HanLP` 进行优化配置,`ideaseg` 在准确度和分词速度上取得了最佳的平衡。 与其他基于 `HanLP` 的插件相比,`ideaseg` 同步了最新 `HanLP` 的代码和数据,去除了无法商用的相关内容;实现了自动配置; 包含了模型数据,无需自行下载,使用简单方便。 `ideaseg` 提供三个模块包括: 1. `core` ~ 核心分词器模块 2. `elasticsearch` ~ ElasticSearch 的 ideaseg 分词插件 3. `opensearch` ~ OpenSearch 的 ideaseg 分词插件 此外 `data` 包含 `HanLP` 的模型数据。 由于包含数据模型体积较大(打包后四五百兆),再加上 `ElasticSearch` 的插件机制严格绑定引擎本身的版本,而且版本众多,因此本项目不提供预编译的二进制版本,你需要自行下载源码进行构建。 ### 构建 以下是插件的构建过程,在开始之前请先安装好 `git`、`java`、`maven` 等相关工具。 首先确定你的 `ElasticSearch` 或者 `OpenSearch` 的具体版本,假设你使用的是 `ElasticSearch` 7.10.2 版本, 请使用文本编辑器打开 `ideaseg/elasticsearch/pom.xml` 文件,修改 `elasticsearch.version` 对应的值为 `7.10.2` (如果是 `OpenSearch` 请修改 `opensearch/pom.xml`)。 保存文件并打开命令行窗口,执行如下命令开始构建: ```shell $ git clone https://gitee.com/indexea/ideaseg $ cd ideaseg $ mvn install ``` 构建完成后,将在 `elasticsearch/target` 和 `opensearch/target` 各生成两个插件文件为 `ideaseg.zip` 。 ### 安装 构建完成后,我们可以利用 `ElasticSearch` 或 `OpenSearch` 提供的插件管理工具进行安装。 `ElasticSearch` 对应的插件管理工具为 `/bin/elasticsearch-plugin` , 而 `OpenSearch` 对应的管理工具为 `/bin/opensearch-plugin`。 其中 `` 和 `` 为两个服务安装后所在的目录。 #### ElasticSearch 安装 ideaseg 插件 ```shell $ bin/elasticsearch-plugin install file:////elasticsearch/target/ideaseg.zip ``` #### OpenSearch 安装 ideaseg 插件 ```shell $ bin/opensearch-plugin install file:////opensearch/target/ideaseg.zip ``` ### 安装完插件后启动失败的处理方法 由于新版本的 `ElasticSearch` 和 `OpenSearch` 在安全策略上有所变化,因此在安装完插件后可能会出现启动失败的情况。 出现这种情况可以复制本项目中的 `jvm.policy` 文件到 `/config` 或者 `/config` 目录下, 然后修改 jvm.options 文件,在文件末尾添加如下内容: ```shell -Djava.security.policy=/config/jvm.policy ``` 其中 `` 为 `ideaseg` 源码所在的路径。要特别注意到是路径前必须有 `file://` ,如果是 Windows 系统,则需要路径前添加 `file:///` ,例如 `file:///D:\WORKDIR\Indexea\ideaseg\elasticsearch\target\ideaseg.zip`。 安装过程会询问插件所需的权限,回车确认即可完成安装,安装完毕需要重启服务才能让插件生效。 接下来你可以使用分词测试工具来对插件进行测试,如下所示: ``` POST _analyze { "analyzer": "ideaseg", "text": "你好,我用的是 ideaseg 分词插件。" } ``` `ideaseg` 提供三种分词模式,分别是: | 名称 | analyzer | 版本 | 说明 | |------------|-------------------|------|-----------------------------------------------------| | 标准中文分词 | ideaseg | v1.0 | 支持 NLP 技术的普通中文分词器 | | 带拼音的中文分词 | ideaseg_pinyin | v1.0 | 在标准中文分词基础上增加拼音,同时保留原始的中文 | | 支持多语种的中文分词 | ideaseg_multilang | v1.1 | 适配多语种的混合分词,要求不同语种的句子使用包括逗号、句号、分号等符号隔开,中文的词条同时包含拼音词条 | 注: 不同的版本请见源码仓库中对应的标签。 关于分词测试的详情请参考 [ElasticSearch 官方文档](https://www.elastic.co/guide/en/elasticsearch/reference/7.10/test-analyzer.html)。 ### 反馈问题 如果你在使用 `ideaseg` 过程中有任何问题,请通过 [Issues](https://gitee.com/indexea/ideaseg/issues) 提出。 ### 特别感谢 https://github.com/KennFalcon/elasticsearch-analysis-hanlp