一个简单的汉字搜索匹配示例(支持拼音、首字母简写)

简介: 在社交应用中,很多场景下需要用到搜索,以微信的搜索通讯录为例。好友自己有昵称,我们可能给他/她备注一个昵称,在输入:拼间、首字母、原文时都应该能匹配到(匹配优先是备注然后才是原来的昵称)。这里以‘芈月传’为例,‘芈’不是常见字,所以输入:myz或者miyuezhuan或者芈月传,都应该能匹配到‘芈月传’这个结果。

在社交应用中,很多场景下需要用到搜索,以微信的搜索通讯录为例。好友自己有昵称,我们可能给他/她备注一个昵称,在输入:拼间、首字母、原文时都应该能匹配到(匹配优先是备注然后才是原来的昵称)。这里以‘芈月传’为例,‘芈’不是常见字,所以输入:myz或者miyuezhuan或者芈月传,都应该能匹配到‘芈月传’这个结果。当然不一定需要全部写完,比如输入:my的时候就应该能匹配到‘芈月传’了。针对多音字的话,可能会麻烦一些,不过也可以解决(在下面的例子之上再进行扩展即可),一般场景下单音已经解决90%以上的问题了,不建议搞的特别复杂。

 

下面例子的思路是input:原文,output:[全拼,首字母,原文],使用indexOf或者正则忽略大小写对searchKey进行匹配,只要命中一个则认为匹配到了。比如[‘ruyichuan’,’ryc’,’如懿传’],要搜索‘如懿传’,因为中间那个字比较难写,所以我可能会打:ry或者ruyi,此时就应该能匹配到’如懿传’了,做的更好一些就是匹配的字进行标红,那么第一项‘ruyichuan’就应该是数组而不是字符串了。下面这个例子比较取巧,有需要的童鞋可以做为一个参考 :)

 

See the Pen simple_pinyin by Meteoric (@zhangyi) on CodePen.

目录
相关文章
|
SQL 分布式计算 大数据
【大数据技术Spark】DStream编程操作讲解实战(图文解释 附源码)
【大数据技术Spark】DStream编程操作讲解实战(图文解释 附源码)
311 0
|
算法
【MATLAB】语音信号识别与处理:卷积滑动平均滤波算法去噪及谱相减算法呈现频谱
【MATLAB】语音信号识别与处理:卷积滑动平均滤波算法去噪及谱相减算法呈现频谱
265 0
|
9月前
|
API
鸿蒙开发:实现popup弹窗
目前提供了两种方式实现popup弹窗,主推系统实现的方式,几乎能满足我们常见的所有场景,当然了,文章毕竟有限,尽量还是以官网为主。
249 2
鸿蒙开发:实现popup弹窗
史上最简单给大模型注入新知识的方法(一)
史上最简单给大模型注入新知识的方法(一)
276 0
|
存储 负载均衡 监控
|
JavaScript 前端开发
vue实现循环发起多个异步请求——Promise.all()与Promise.race()
vue实现循环发起多个异步请求——Promise.all()与Promise.race()
543 1
|
NoSQL Java PHP
redis模糊查询
redis模糊查询
692 0
|
XML JSON API
【AIGC】LangChain Agent 最新教程详解及示例学习
【5月更文挑战第5天】LangChain Agent全网最全最新教程学习及示例学习
1355 0
|
JavaScript 前端开发
在vue中循环中调用接口-promise.all();按顺序执行异步处理
在vue中循环中调用接口-promise.all();按顺序执行异步处理
|
算法 数据可视化 数据挖掘
知识图谱入门:使用Python创建知识图,分析并训练嵌入模型
本文中我们将解释如何构建KG、分析它以及创建嵌入模型。
750 2