Giter Site home page Giter Site logo

pinyin-match's Introduction

如果有帮助,麻烦点个Star

具体实现文档

https://juejin.cn/post/6844904161461403661

pinyin-match

能够使用拼音快速检索目标。

  1. 简体版27KB (gzip ≈ 19KB),繁体版86KB (gzip ≈ 60KB)
  2. 支持多音字、繁体字、拼音首字母匹配,具备分词功能
  3. 返回位置信息,可用于高亮匹配字符
  4. 在长多音字串下依然有高性能

在线演示:https://xmflswood.github.io/pinyin-match/;

安装

npm install pinyin-match --save

支持<script>引入

简体:<script src="pinyin-match/dist/main.js"></script>

繁体:<script src="pinyin-match/dist/traditional.js"></script>

使用方式:
PinyinMatch.match('xxx', 'x')

API

.match(input, keyword)

查询匹配拼音的数据。

参数:

  1. input {string} 目标字符串
  2. keyword {string} 输入的拼音或其他关键词

返回:

{[Array]|{Boolean}}

使用范例

引入简体版:

import PinyinMatch from 'pinyin-match';  // es  

const PinyinMatch = require('pinyin-match'); // commonjs

引入繁体版(es):

import PinyinMatch from 'pinyin-match/es/traditional.js'; // es  

const PinyinMatch = require('pinyin-match/lib/traditional.js'); // commonjs

列表项为字符串:

let test = '123曾经沧海难为水除却巫山不是云'

PinyinMatch.match(test, '23曾'); // [1, 3]

PinyinMatch.match(test, 'cjc') // [3, 5]

PinyinMatch.match(test, 'cengjingcanghai') // [3, 6]

PinyinMatch.match(test, 'cengjingcangha') // [3, 6]

PinyinMatch.match(test, 'engjingcanghai') // false

PinyinMatch.match(test, 'zengjingcang') // [3, 5]

PinyinMatch.match(test, 'sdjkelwqf') // false

PinyinMatch.match(test, 'zengji ng cang') // [3, 5]

PinyinMatch.match(test, 'zengji ng cangsdjfkl') // false

PinyinMatch.match('   我 爱你 中   国   ', 'nzg') // [6, 12]

PinyinMatch.match('   我 爱你 中   国   ', '爱你中') // [5, 8]

PinyinMatch.match('發', 'fa') // [0, 0]

许可证

pinyin-match is under The Star And Thank Author License (SATA)

本项目基于MIT协议发布,并增加了SATA协议

其他语言版本

欢迎其他语言开发者增加对应版本(标明来自本项目即可)

GO

https://github.com/limawanyan/go-pinyin-match

仓库

https://github.com/xmflswood/pinyin-match

pinyin-match's People

Contributors

dependabot[bot] avatar huskylengcb avatar lc-soft avatar michael18811380328 avatar miserylee avatar xmflswood avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pinyin-match's Issues

搜索时不支持中间带空格的词

比如说:中 国 ,中间有一个空格,却匹配不到,我们项目中输入昵称时可以输入空格,这样就检索不到

试了下微信是支持的,希望能支持下这个,谢谢了。

typescript

能提供typescript下用法的示例么?

是否能够暴露一个是否开启多音字的参数

在某些场景下,比如菜单搜索场景下,我们不可能需要匹配姓氏或者多音字,那么就可以关闭,不然我输入s,”单“跑出来了,并且我还做了高亮处理,是有点尴尬的啊

可以做前缀子串匹配吗?

比如 重庆 的拼音是

chong qing
zhong qing

其中 的前缀子串有:

c
ch
cho
chon
chong
z
zh
zho
zhon
zhong

的前缀子串有:

q
qi
qin
qing

那么按照前缀匹配的话,以下输入组合都可以进行匹配:

cq
cqi
cqin
cqing
chq
chqi
chqin
chqing
choq
choqi
choqin
choqing
chonq
chonqi
chonqin
chonqing
chongq
chongqi
chongqin
chongqing
zq
zqi
zqin
zqing
zhq
zhqi
zhqin
zhqing
zhoq
zhoqi
zhoqin
zhoqing
zhonq
zhonqi
zhonqin
zhonqing
zhongq
zhongqi
zhongqin
zhongqing

能否对识别的结果进行排序?

截屏2021-12-20 18 33 18

在网页端使用时,如果输入拼音,现在搜索的结果是原始的数组顺序,能否支持加一个参数,可以按照匹配的汉字顺序进行输出?这样便于用户找到需要的选项?另外,看到核心代码中有一点点性能可以提升,已经提交 PR,麻烦大佬看一下

繁体中文

请问何时可以支援繁体中文?
谢谢。

readme有误

PinyinMatch.match(text, 'zengji ng cang') // [3, 5]
PinyinMatch.match(text, 'zengji ng cangsdjfkl') // false

text 应为 test

常用字搜索不到

您好!该插件存在常用字搜索不到的情况,查看源码发现没有收录“啰”字,但是常用搜索“哈啰单车”,能否将“啰”字加入常用简体汉字中,谢谢!

搜索结果返回异常

let test = '朱'
PinyinMatch.match(test, 's');
此时得到的结果是【0,0】
按理得到的结果应该是false

「ce」匹配上 「参」

image

老哥麻烦看下,window.PinyinMatch.match('RM_WeChat_参与MGM次数', 'ce'), 匹配上 [10, 10]是怎么个回事?

ts 定义调整

建议将 ts 定义中的 boolean 调整为 false

function match(input: string, keys: string): [number, number] | false

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.