From 9bb370c4768cb9d3ebf5347044f34e6e9105b071 Mon Sep 17 00:00:00 2001 From: Looly Date: Thu, 14 Dec 2023 17:44:57 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96TokenizerEngine=E4=BD=BF?= =?UTF-8?q?=E7=94=A8IK=E5=88=86=E8=AF=8D=E5=99=A8=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E5=B9=B6=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 3 ++- .../tokenizer/engine/ikanalyzer/IKAnalyzerEngine.java | 10 +++------- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 72efbb165..daf09d5d9 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ # 🚀Changelog ------------------------------------------------------------------------------------------------------------- -# 5.8.24(2023-12-13) +# 5.8.24(2023-12-14) ### 🐣新特性 * 【cache 】 Cache增加get重载,可自定义超时时间(issue#I8G0DL@Gitee) @@ -12,6 +12,7 @@ * 【extra 】 SpringUtil增加getProperty重载(pr#1122@Gitee) * 【core 】 FileTypeUtil增加null判断(issue#3419@Github) * 【core 】 DateUtil.parse支持毫秒时间戳(issue#I8NMP7@Gitee) +* 【extra 】 优化TokenizerEngine使用IK分词器支持并发(pr#3427@Github) ### 🐞Bug修复 * 【core 】 修复LocalDateTime#parseDate未判断空问题问题(issue#I8FN7F@Gitee) diff --git a/hutool-extra/src/main/java/cn/hutool/extra/tokenizer/engine/ikanalyzer/IKAnalyzerEngine.java b/hutool-extra/src/main/java/cn/hutool/extra/tokenizer/engine/ikanalyzer/IKAnalyzerEngine.java index 5a7dc83c0..a030268fe 100644 --- a/hutool-extra/src/main/java/cn/hutool/extra/tokenizer/engine/ikanalyzer/IKAnalyzerEngine.java +++ b/hutool-extra/src/main/java/cn/hutool/extra/tokenizer/engine/ikanalyzer/IKAnalyzerEngine.java @@ -1,10 +1,8 @@ package cn.hutool.extra.tokenizer.engine.ikanalyzer; -import cn.hutool.core.util.ReflectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.extra.tokenizer.Result; import cn.hutool.extra.tokenizer.TokenizerEngine; -import org.wltea.analyzer.cfg.Configuration; import org.wltea.analyzer.core.IKSegmenter; /** @@ -15,27 +13,25 @@ import org.wltea.analyzer.core.IKSegmenter; */ public class IKAnalyzerEngine implements TokenizerEngine { - private final IKSegmenter seg; - /** * 构造 */ public IKAnalyzerEngine() { - this(new IKSegmenter(null, true)); } /** * 构造 * * @param seg {@link IKSegmenter} + * @deprecated 并发问题,导致无法共用IKSegmenter,因此废弃 */ + @Deprecated public IKAnalyzerEngine(IKSegmenter seg) { - this.seg = seg; } @Override public Result parse(CharSequence text) { - IKSegmenter copySeg = new IKSegmenter(null, (Configuration) ReflectUtil.getFieldValue(this.seg, "cfg")); + final IKSegmenter copySeg = new IKSegmenter(null, true); copySeg.reset(StrUtil.getReader(text)); return new IKAnalyzerResult(copySeg); }