最近接到需求,要求商城中进行半模糊搜索时,输入拼音字母同样要求进行自动匹配出相关品牌、类目、关键词等数据,从而进行筛选商品
汉字转换拼音部分在上篇文章已有较为详细的描述,本文中不在赘述!
根据拼音搜索汉字时存在以下几种情况

  1. 只有拼音 例如: k 、ko 、kou 、kouh 、kouhong
  2. 只有汉字 例如:口 、口红
  3. 前面汉字后面字母 例如:口h 、口hong、口红s
  4. 前面字母后面汉字 例如:kou红、k红
  5. 汉字与字母多次交叉 例如: kou红se、口hong红

需求中只需要前列精准匹配,后续模糊

/*** 中文验证* public static final String CHINESE_UNICODE_REGEX = "[\\u4E00-\\u9FA5]";* @param str* @return 验证通过返回true*/
public static boolean isChinese(String str) {//验证是否为汉字boolean b = false;Pattern pattern = Pattern.compile(CommonConstant.CHINESE_UNICODE_REGEX);Matcher m = pattern.matcher(str);if (m.find()) {return true;}return b;
}public static String getChinese(String name){StringBuilder chinese = new StringBuilder();//汉字字符串StringBuilder noChinese = new StringBuilder();//非汉字字符串int flog = 0;//标记,出现非汉字时标记1for (int i = 0; i <= name.length()-1; i++){//遍历每个字符String w = name.substring(i, i+1);if (isChinese(w)){//验证是否是汉字if (flog > 0){//已出现过非汉字后又重新出现汉字则将前面出现过的非汉字拼接到汉字后面chinese.append(noChinese);noChinese.delete(0,noChinese.length());flog = 0;}chinese.append(w);}else{flog = 1;noChinese.append(w);}}return chinese.toString();
}

接口调用的方法中获取中文与拼音两个字符串数据

 String chinese= CommonUtil.getChinese(name); //获取汉字String pyName = PinyinUtils.getPinYin(name);//获取拼音

将汉字与拼音同时传入mybatis中拼接sql语句

select id, `name` from brand WHERE `name` like concat('口红','%') and name_py like concat('kouhong','%') group by id limit 10

此时关于拼音搜索匹配汉字部分已基本完成,若有更多更好的方法及本文的不足之处敬请指出,一切为了进步!

拼音字母搜索匹配汉字相关推荐

  1. android 通讯录 首字母索引,android仿微信通讯录搜索(匹配拼音,字母,索引位置标记颜色)...

    前言: 仿微信通讯录搜索功能,通过汉字或拼音首字母找到匹配的联系人并显示匹配的位置 一:先看效果图 字母索引 搜索匹配 二:功能分析 1:汉字转拼音 通讯录汉字转拼音(首个字符当考虑姓氏多音字), 现 ...

  2. JavaScript- 正则表达式匹配汉字

    此文发布于2018-01-26-知乎(毕竟技术在不断的变化,请根据实际情况去写自己需要的代码) 一个可能有 20 年历史的正则表达式 在谷歌搜索「JavaScript 正则表达式匹配汉字」的时候,前几 ...

  3. JavaScript 正则表达式匹配汉字

    一个可能有 20 年历史的正则表达式 在谷歌搜索「JavaScript 正则表达式匹配汉字」的时候,前几条结果全都是/[\u4e00-\u9fa5]/.没有人怀疑这个正则表达式有什么问题,那么在 20 ...

  4. 快速搜索匹配联系人算法

    在通讯录应用中,快速搜索匹配符合关键字的联系人,是一个必备的需求.比如要搜索 名字 尼古拉斯赵四 ,电话号码 1234567 这个联系人,我们可以输入: 1.中文全名 尼古拉斯赵四 2.中文部分名字 ...

  5. select2通过全拼及首字母匹配汉字

    (注:原文出自qq_33142257的博客http://blog.csdn.net/qq_33142257/article/details/52575823 以及qq_28685573的博客http: ...

  6. laravel 分词搜索匹配度_DSSM文本匹配模型在苏宁商品语义召回上的应用

    文本匹配是自然语言处理中的一个核心问题,它不同于MT.MRC.QA 等end-to-end型任务,一般是以文本相似度计算的形式在应用系统中起核心支撑作用1.它可以应用于各种类型的自然语言处理任务中,例 ...

  7. 搜索结果红色php,.NET_asp.net搜索匹配关键字为红色显示的代码,首先创建类库 Model (业务实体 - phpStudy...

    asp.net搜索匹配关键字为红色显示的代码 首先创建类库 Model (业务实体层),创建类: NewDina.CS 用于获取数据库相应字段名, Demo如下: [Copy to clipboard ...

  8. JAVA匹配所有英文_java匹配汉字、英文、数字

    使用的正则表达式 package Test_1; import java.util.Scanner; public class Test_7 { /** * @param args */ public ...

  9. php正则匹配汉字!

    php正则匹配汉字! /^[\x{4e00}-\x{9fa5}]+$/u 以上这个正则表达式就是困扰了很多php程序员的匹配汉字的正则表达式 大家可能会觉得很简单,实际上不同编码,不同程序语言,都有些 ...

  10. js正则表达式匹配汉字

    假期老师布置了一个大作业,需要用正则表达式匹配一下 uniocde编码的汉字,但是网上千篇一律都是 /[\u4e00-\u9fa5]/ ,结果当然没有通过老师的作业检查(当然问题不仅仅只有这一点). ...

最新文章

  1. 深度学习中的正则化技术(附Python代码)
  2. 动态规划(DP),Human Gene Functions
  3. arpr选定的文件非rar压缩包_python解压压缩包
  4. 记载下这个题中的语法(对这些语法的使用不熟悉)
  5. golang 将word转为pdf_如何将word转化为pdf格式
  6. RxJs 操作符 withLatestFrom 在 SAP 电商云 Spartacus UI 中的应用
  7. powerdesigner中如何在自动生成建表SQL时添加模式名schema
  8. 爆料称配备更大屏幕尺寸的Apple Silicon版iMac仍在研发中
  9. flutter怎么手动刷新_Flutter 小技巧实现通用的局部刷新
  10. 冷知识 —— 容易读错的发音(英文)
  11. jenkins简介及docker部署
  12. 驰骋工作流程引擎在流程设计发生变化后如何处理?
  13. C#语法基础(三)----窗体设计
  14. 怎么更改计算机网上邻居,如何更换登入网上邻居帐号
  15. HR面试都会问什么问题?(上)
  16. Python爬虫入门【11】:半次元COS图爬取
  17. C语言自动预订飞机票问题
  18. 6个杰出的国产APP推荐,你知道多少呢?
  19. 四大机器学习降维算法:PCA、LDA、LLE、Laplacian Eigenmaps
  20. markdown编辑器_Markdown编辑器

热门文章

  1. JAVA NIO 实现群聊
  2. ctfmon.exe
  3. python图像标记工具怎么用_图像标注教程(使用LabelImg标注工具)
  4. html用记事本打字显示问号,电脑记事本问号怎么办
  5. 分享一个好看的邮件html模板
  6. 展讯模块读写IMEI
  7. 剑指offer总目录
  8. 一款好用的三维贴图纹理制作软件:Substance Designer Mac 内附安装教程
  9. postgresql 查询sql字符串拼接相关
  10. 选择SMA射频连接头的注意事项