Merge pull request #3427 from micuncang/v5-dev

修复TokenizerEngine使用IK分词器存在并发问题
This commit is contained in:
Golden Looly 2023-12-14 17:38:38 +08:00 committed by GitHub
commit 90772da8d9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,17 +1,17 @@
package cn.hutool.extra.tokenizer.engine.ikanalyzer;
import org.wltea.analyzer.core.IKSegmenter;
import cn.hutool.core.util.ReflectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.tokenizer.TokenizerEngine;
import cn.hutool.extra.tokenizer.Result;
import cn.hutool.extra.tokenizer.TokenizerEngine;
import org.wltea.analyzer.cfg.Configuration;
import org.wltea.analyzer.core.IKSegmenter;
/**
* IKAnalyzer分词引擎实现<br>
* 项目地址https://github.com/yozhao/IKAnalyzer
*
* @author looly
*
* @author looly
*/
public class IKAnalyzerEngine implements TokenizerEngine {
@ -19,7 +19,6 @@ public class IKAnalyzerEngine implements TokenizerEngine {
/**
* 构造
*
*/
public IKAnalyzerEngine() {
this(new IKSegmenter(null, true));
@ -27,7 +26,7 @@ public class IKAnalyzerEngine implements TokenizerEngine {
/**
* 构造
*
*
* @param seg {@link IKSegmenter}
*/
public IKAnalyzerEngine(IKSegmenter seg) {
@ -36,7 +35,8 @@ public class IKAnalyzerEngine implements TokenizerEngine {
@Override
public Result parse(CharSequence text) {
this.seg.reset(StrUtil.getReader(text));
return new IKAnalyzerResult(this.seg);
IKSegmenter copySeg = new IKSegmenter(null, (Configuration) ReflectUtil.getFieldValue(this.seg, "cfg"));
copySeg.reset(StrUtil.getReader(text));
return new IKAnalyzerResult(copySeg);
}
}