package com.ruoyi.busi.utils;
import cn.hutool.core.util.StrUtil;
import org.springframework.stereotype.Component;

import java.util.*;
import java.util.stream.Collectors;
/**
 * 文本相似度对比
 * @author 朱春云
 * @version 1.0
 */
@Component
public class NoticeUtils {

    /**
     * 比较两个文本字符串的相似度
     * @param str1 文本1
     * @param str2 文本2
     * @return 相似度值，范围在0到1之间，值越大相似度越高
     */
    public static double computeJaccardSimilarity(String str1, String str2) {
        Set<String> set1 = Arrays.stream(str1.split("\\s+")) // 分词，这里按空格分割，可以根据需要调整正则表达式
                .collect(Collectors.toSet());
        Set<String> set2 = Arrays.stream(str2.split("\\s+")) // 分词，这里按空格分割，可以根据需要调整正则表达式
                .collect(Collectors.toSet());

        Set<String> intersection = new HashSet<>(set1);
        intersection.retainAll(set2); // 取交集
        Set<String> union = new HashSet<>(set1);
        union.addAll(set2); // 取并集
        union.removeAll(intersection); // 从并集中移除交集部分（因为我们只计算交集的元素）
        return (double) intersection.size() / union.size(); // 返回相似度比例
    }
    /**
     * 翻译通告的博主类型字典
     * @author vinjor-M
     * @date 17:10 2025/3/25
     * @return java.lang.String
    **/
    public String translateBloggerTypes(String bloggerTypes, Map<String,String> categoryMap){
        List<String> rtnList = new ArrayList<>();
        List<String> bloggerTypeList = Arrays.asList(bloggerTypes.split(StrUtil.COMMA));
        bloggerTypeList.forEach(item->{
            if(categoryMap.get(item)!=null){
                rtnList.add(categoryMap.get(item));
            }
        });
        return String.join(" ",rtnList);
    }
}
