# 拼音模糊搜索 **Repository Path**: programmer-k/pinyin-fuzzy-search ## Basic Information - **Project Name**: 拼音模糊搜索 - **Description**: Java实现的简单的工具类支持(拼音, 多音字, 谐音字, 汉字, 阿拉伯数字) - **Primary Language**: Java - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2023-08-15 - **Last Updated**: 2024-08-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Java实现拼音模糊搜索 #### 介绍 Java实现的简单的工具类支持(拼音, 多音字, 谐音字, 汉字, 阿拉伯数字) 对标阿里钉钉的上方搜索栏实现的 #### 对应依赖 ```xml com.github.open-android pinyin4j 2.5.0 ``` ```xml // https://mvnrepository.com/artifact/com.github.open-android/pinyin4j implementation group: 'com.github.open-android', name: 'pinyin4j', version: '2.5.0' ``` #### 代码调试 1. 代码中含有一个main方法, 在方法传入参数即可使用 2. fuzzyQuery()就是模糊查询的方法, name即为用户输入的拼音, userName即为需要匹配的名称集合 ![输入图片说明](image.png) #### 业务思路 1. 当库中已进行租户隔离并且业务数据较少时,您可以使用工具类对库中的姓名进行模糊匹配(前提需要将库中所有的数据查询出来进行比对),并将结果全部查出, 再将结果去库中查询 2. 当库中的数据量庞大且增长速度快时,我们建议将生成的拼音字符串存储到MySQL中,然后再进行模糊匹配操作。这样可以提高查询效率。 #### 注意 1. 在处理用户姓名中的阿拉伯数字时,假设用户姓名存储为“张三2”,而用户输入的内容为“3”,后台的业务逻辑需将“张三2”通过正则表达式替换为“张三二”。接着,对该数据进行拼音处理,直到最后开发者需手动调用 replaceChineseNumber(String input) 方法,将中文数字替换回阿拉伯数字。 此时,系统会匹配到两条数据:“张三2”和“张三二”,其中一条为冗余数据。开发者需要根据自身业务逻辑来处理这类冗余数据,确保数据的一致性和准确性。 ![输入图片说明](image2.png)