# 拼音模糊搜索 **Repository Path**: Staywithmee/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**: 1 - **Forks**: 1 - **Created**: 2023-12-05 - **Last Updated**: 2023-12-05 ## 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)