Code Monkey home page Code Monkey logo

pinyin-engine's Introduction

pinyin-engine

这是一款简单高效的拼音匹配引擎,它能使用拼音够快速的检索列表中的数据。

  1. 使用索引以及缓存机制,从而在客户端实现毫秒级的数据检索
  2. 它的字典数据格式经过压缩处理,简体中文版本仅仅 17kb 大小(Gzip)
  3. 支持多音字、支持拼音首字母匹配
  4. 简体版本覆盖 6718 个汉字,繁体中文覆盖 20846 个汉字

在线演示:https://aui.github.io/pinyin-engine/example/

安装

npm install pinyin-engine --save

API

new PinyinEngine(list, keys)

建立拼音索引。

参数:

  1. list {[string]|[Object]} 被索引的目标
  2. keys {[string]} 可选。如果 list 为 Object,这里用来设置需要被索引的 key
  3. begin {[boolean]} 可选。如果 begin 为 true,将执行前模糊检索

.query(keyword)

查询匹配拼音的数据。

参数:

  1. keyword {string} 拼音或者关键字

返回:

{[string]|{Object}}

繁体中文版本

包含简体中文与繁体中文。

const PinyinEngine = require('pinyin-engine/tw');

使用范例

列表项为字符串:

const PinyinEngine = require('pinyin-engine');

// 建立数据索引
const pinyinEngine = new PinyinEngine([
    '清华大学',
    '北京大学',
    '**美院'
]);

// 查询
pinyinEngine.query('daxue'); // ['清华大学', '北京大学']

列表项为对象:

const PinyinEngine = require('pinyin-engine');

// 建立数据索引
const pinyinEngine = new PinyinEngine([
    { id: 0, name: '清华大学' },
    { id: 1, name: '北京大学' },
    { id: 3, name: '**美院' }
], ['name']);

// 查询
pinyinEngine.query('daxue'); // ['清华大学', '北京大学']

pinyin-engine's People

Contributors

1021683053 avatar aui 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

pinyin-engine's Issues

匹配大写开头的英文,匹配不到

比如 [{name:'Alice'}] 这种,如果输入'a',匹配时会过滤掉。
我在自己本地改的,src/engine.js的第59行,

建议:
原来的 indexs[index].indexOf(keyword) 改为 indexs[index].toLowerCase().indexOf(keyword)
就可以了。

在iPhone SE手机会造成页面卡死

在iPhone SE机型用new PinyinEngine()会造成页面白屏卡死,可以稳定复现,去掉后就正常了,估计是兼容性没处理好,其他机型估计也可能有问题,收到不少用户反馈了,算是个大坑了

可能还可以优化的地方

1.拼音做断字处理更符合搜索习惯
如:糖饼(tang bing) 现在输入 gb 也能搜到,可以在participle()的时候处理下

2.可能整个匹配算法(主要是做组合的时候,实际上是笛卡尔积?)需要做优化,这点现在也没什么好思路,只是看了下微信app能处理得非常好
pinyin-engine在处理长多音字的时候是存在问题的,比如:
‘曾大曾大曾大曾大曾大曾大曾大曾大曾大曾大曾大曾大’ (zeng ceng, da dai tai)这里总共20个多音字,有6^10次方个组合,会直接导致内存撑爆,浏览器卡死,在测试16个字的时候需要处理近一秒(chrome 61)

建议可以暂时限制处理的多音字的个数

关于拼音匹配引擎的疑惑

首先,非常感谢github上您贡献的 pinyin-engine 库,最近也在研究学习,但是有个问题,希望您能帮忙解答下,就是:源码中的 dict-cn.json 文件是如何生成的,而且 decode.js 文件是专门用来解码这个字典json的,这个加密过程是如何实现的?

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.