前言
其实这个库早年就已经创建并完成了第一版,支持 全拼+首字母+中英文+多音字 搜索,功能还算强大。后面也一直没再关注。这次借着修复 BUG 的功夫更新了一版,并发布了一个 swift
版本,也算还了一笔技术债。
项目地址:点我
功能介绍
这个库目前由 ObjectiveC
版和 Swift
版。都支持 全拼+首字母+中英文+多音字 搜索。
具体效果如何,请看下图:
原理介绍
- 加载拼音资源文件,初始化配置
- 以匹配关键字 keyword 为例,优先精准匹配
- 精准匹配没搜索到,那么考虑将搜索文本转成拼音首字母,将 keyword 去搜索这个拼音首字母的字符串是否有匹配到
- 如果拼音首字母没匹配到,那么考虑全拼是否能匹配
实现原理说穿了还是比较简单的,主要是将各个文字的拼音的排列组合列出来,再去一一匹配。
使用
OC版
NSArray *ranges;
BOOL match = [self.textLabel.text canMatchWithKeyword:searchText allRanges:&ranges];
if (match) {
...
}
swift版
var ranges: [Range<String.Index>] = []
text.canMatch(with: searchText, all: &ranges)
if ranges.count > 0 {
...
}
如何集成
对于ObjectiveC项目,通过pod组件库的方式引入。执行:
pod 'IASearchKit', '~> 1.2.0'
对于Swift项目,通过pod组件库方式引入。执行:
pod 'KeySearch', '~> 0.1.5'
源码地址:点我跳转