导包(maven),其他的上下面那个网站查:
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-text -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-text</artifactId>
<version>1.4</version>
</dependency>
FuzzyScore
是一个很简单的类库,主要用于分析文本的相似度。
首先是构造方法FuzzyScore fuzzyScore = new FuzzyScore(Locale.ENGLISH);
传参选择一种语言。支持中文Locale.CHINESE
。
有两个方法主要讲一下Integer fuzzyScore(CharSequence term, CharSequence query)
这个相似度的概念。大致是这个意思,具体实现还和两个序列的下标有关系,详情请查看源码:
单个字符匹配相似度+1,连续字符匹配相似度+3
下面是根据这个相似度进行模糊搜索的方式:
FuzzyScore fuzzyScore = new FuzzyScore(Locale.ENGLISH);
String[] array = {"abcde","aebc","ddabcc","abcdd"};
String query = "e";
Integer queryScore = fuzzyScore.fuzzyScore(query, query);
ArrayList<String> arrayList = new ArrayList<>();
for (String s : array) {
Integer score = fuzzyScore.fuzzyScore(s,query);
System.out.println(score);
if (score>=queryScore){
arrayList.add(s);
}
}
System.out.println(arrayList.toString());
运行结果如下:
1
1
0
0
[abcde, aebc]