FuzzyScore与模糊搜索

导包(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]

猜你喜欢

转载自blog.csdn.net/saywhat_sayhello/article/details/80846136