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


}
