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); }