沉淀下来,雕琢技术~
最近遇到需要校验字符串的相似度的需求,遂经常调研查询资料发现,apache
提供的 commons-text
依赖有个 CosineSimilarity
类提供可以匹配两个字符串的相似度。
引入依赖
org.apache.commons
commons-text
1.10.0
使用
public void test() {
String s1 = "text1";
String s2 = "text2";
Map<CharSequence, Integer> map = Arrays.stream(s1.split(""))
.collect(Collectors.toMap(c -> c, c -> 1, Integer::sum));
Map<CharSequence, Integer> map2 = Arrays.stream(s2.split(""))
.collect(Collectors.toMap(c -> c, c -> 1, Integer::sum));
CosineSimilarity cosineSimilarity = new CosineSimilarity();
Double similar = cosineSimilarity.cosineSimilarity(map, map2);
System.out.println("similar = " + similar);
}
执行结果