新增自动分段关键词处理

segment2.0
linrf 2 years ago
parent fa09517f5b
commit d5f5403d0c

@ -0,0 +1,62 @@
package com.docus.server.controller;
import lombok.Data;
import java.util.List;
@Data
public class KeyWordStrategy {
private String id;
//用包含的逻辑。
//包含占比。 按照占比排序
//从什么开始,然后从什么跳出。
// 分段id,包含占比,关键词列表
private List<String> keys;
private Double score;
private String segmentId;
private String segmentName;
private List<KeyWordStrategy> keyWordStrategyHashMap;
public KeyWordStrategy(String id, List<String> keys, Double score, String segmentId, List<KeyWordStrategy> keyWordStrategyHashMap) {
this.id = id;
this.keys = keys;
this.score = score;
this.segmentId = segmentId;
this.keyWordStrategyHashMap = keyWordStrategyHashMap;
}
public SegmentResult isContain(String keyWord) {
for (String key : keys) {
if (keyWord.contains(key)) {
if (key.length() / keyWord.length() >= this.score) {
if (keyWordStrategyHashMap != null) {
//没有二级分类,直接返回当前分段
return new SegmentResult(id, this.segmentId, key, this.score);
} else {
//有二级分类,如果有找到,则返回二级分类。
for (KeyWordStrategy secSegment : keyWordStrategyHashMap) {
SegmentResult contain = secSegment.isContain(key);
return contain;
}
//没有找到,则返回当前分类。
return new SegmentResult(id, this.segmentId, key, this.score);
}
}
}
}
//如果都没有找到,返回空。
return null;
}
}

@ -0,0 +1,15 @@
package com.docus.server.controller;
import lombok.AllArgsConstructor;
import lombok.Getter;
@AllArgsConstructor
@Getter
public class SegmentResult {
private String id;
private String segmentId;
private String keyWord;
private Double score;
}

@ -0,0 +1,33 @@
package com.docus.server.service;
import com.docus.server.controller.KeyWordStrategy;
import com.docus.server.controller.SegmentResult;
import java.util.ArrayList;
import java.util.List;
public class Service {
private List<KeyWordStrategy> keyWordStrategyHashMap;
public void init() {
//读取配置。并将初始化整个分段信息。
keyWordStrategyHashMap = new ArrayList<>();
}
/**
*
*
* @param keyword
* @return
*/
public SegmentResult find(String keyword) {
for (KeyWordStrategy keyWordStrategy : keyWordStrategyHashMap) {
return keyWordStrategy.isContain(keyword);
}
return null;
}
}
Loading…
Cancel
Save