iOS- 本地文本容错搜索引擎2-->如何实现英文(英文首字母,汉语拼音)对中文的搜索?
2015-12-04 16:30
627 查看
1.前言
先闲说几句,最近北京的雾霾真是大,呛的我这攻城师都抗不住了。各位攻城师们一定要爱护好自己的身体!空气好时,少坐多动。如果条件好的话,最好让你们BOSS搞个室内空气净化器。因为那几天一般的室内雾霾指数也是高的吓人T T,哎不多说。
转正文>>
此文接本博客上篇
iOS- 如何建立索引实现本地文本搜索引擎,允许容错搜索?
/article/5244474.html,
上次发完博客后,很有朋友问道是否支持中文的问题,
自己测试完后发现只能输入“中文”才能搜索到相应内容,而无法像苹果搜索一样,输入“baidu ”> 搜索到“百度” 输入“bd” > 搜索到“百度”
实现效果
今天抽空把原来的本地文本搜索引擎扩充一下,正式支持英文对 中文搜索。
关于如何建立索引实现本地文本搜索引擎可以看上面的博客。
今天主要分享下如何实现英文(英文首字母,汉语拼音)对中文的搜索,希望对需要的朋友有一些帮助。
2.如何将中文转成拼音,首字母
第一步用Cocoapods将PinYin框架拉进你的项目,
或直接上我的Github上取—》 https://github.com/SaupClear/PinYinLib
导入头文件.h
#import "ChineseInclude.h"
#import "PinYinForObjc.h"
基础示例:
核心方法
//判断字符串是否是中文 if ([ChineseInclude isIncludeChineseInString:@“百度"]) //然后将中文转换成拼音 NSString *pybody = [PinYinForObjc chineseConvertToPinYin:@"百度"]; //同时将中文转换成拼音首字母 NSString *pyheader = [PinYinForObjc chineseConvertToPinYinHead:@“百度”]; .
3.如何集成进本地容错搜索引擎
将三步准备好后,我们就可以将其合成进我们的本地搜索引擎在上篇博客里提到的,检索的数据仓库初始化的位置
同时将拼音和拼音首字母加入关联 for (MenuItemObject *objmenu in allmenus) { //检测是否是有中文 if ([ChineseInclude isIncludeChineseInString:objmenu.displayname]) { //转换为拼音,和拼音首字母 NSString *pybody = [PinYinForObjc chineseConvertToPinYin:objmenu.displayname]; NSString *pyheader = [PinYinForObjc chineseConvertToPinYinHead:objmenu.displayname]; //将其索引关联上本地搜索引擎 [[PermissiveResearchDatabase sharedDatabase] addRetainedObjet:objmenu forKey:pybody]; [[PermissiveResearchDatabase sharedDatabase] addRetainedObjet:objmenu forKey:pyheader]; } [[PermissiveResearchDatabase sharedDatabase] addRetainedObjet:objmenu forKey:objmenu.displayname]; }
之后即可支持英文baidu , bd 对-> 中文的搜索
关于本地搜索引擎的实现详情,可以查看我上篇博客
iOS- 如何建立索引实现本地文本搜索引擎,允许容错搜索?
/article/5244474.html,
实现效果
有什么问题欢迎留言,有空我会一起回答!
作者: 清澈Saup
出处: http://www.cnblogs.com/qingche/
本文版权归作者和博客园共有,欢迎转载,但必须保留此段声明,且在文章页面明显位置给出原文连接。
相关文章推荐
- ios测试基础六:ios模拟不同网速
- ios测试基础五: ios手机流量消耗
- iOS开发-多线程-线程间通讯
- iOS开发——warning: directory not found for option ' '
- iOS 发大招 otherButtonTitles:(nullable NSString *)otherButtonTitles, ... 写法 && 编写通用类的时候关于可变参数的处理
- iOS开发技巧--项目中定义宏的相关方法
- ios 常用第三方类库
- ios开发之消息推送(以信鸽推送为例)
- iOS开发-多线程-线程安全
- iOS开发-多线程-NSThread
- 转:关于setNeedsDisplay和setNeedsLayout
- iOS 天气应用代码中文介绍
- iOS开发-多线程-简介
- iOS开发-POST请求与GET请求
- 不同苹果设备的区分《摘自iOS开发指南》
- IOS 启动画面设置
- iOS 开发中一些不常用技巧
- iOS之 随笔-静态库创建Xcode7
- iOS应用内支付(IAP)的注意事项
- iOS8数字键盘左下角添加完成按钮的核心代码如下: