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) {
        if (str1 == null || str2 == null || (str1.isEmpty() && str2.isEmpty())) {
            return 1.0; // 空字符串认为完全相同
        }
        if (str1.isEmpty() || str2.isEmpty()) {
            return 0.0; // 一个为空另一个非空，认为完全不同
        }

        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); // 正确的并集

        if (union.isEmpty()) {
            return 0.0; // 安全处理，避免除以零
        }

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


}
