1.前言  

先闲说几句,最近北京的雾霾真是大,呛的我这攻城师都抗不住了。各位攻城师们一定要爱护好自己的身体!空气好时,少坐多动。
如果条件好的话,最好让你们BOSS搞个室内空气净化器。因为那几天一般的室内雾霾指数也是高的吓人T T,哎不多说。
转正文>>
 
此文接本博客上篇
iOS- 如何建立索引实现本地文本搜索引擎,允许容错搜索?
 
上次发完博客后,很有朋友问道是否支持中文的问题,
自己测试完后发现只能输入“中文”才能搜索到相应内容,而无法像苹果搜索一样,输入“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- 如何建立索引实现本地文本搜索引擎,允许容错搜索?
 
 
实现效果
 
 
 
 
 
 
有什么问题欢迎留言,有空我会一起回答!
 
作者: 清澈Saup
出处:http://www.cnblogs.com/qingche/
本文版权归作者和博客园共有,欢迎转载,但必须保留此段声明,且在文章页面明显位置给出原文连接。
 

iOS- 本地文本容错搜索引擎2-->如何实现英文(英文首字母,汉语拼音)对中文的搜索?的更多相关文章

  1. IOS本地,APNS远程推送(具体过程)

    添加本地推送 ///本地添加 -(void)addLocalPushNotification:(UIButton*)sender; { NSLog(@"%s",__FUNCTION ...

  2. iOS本地动态验证码生成-b

    用于ios本地动态生成验证码,效果如下: demo.gif 导入CoreGraphics.framework用于绘制图形 封装UIView,便捷使用,代码如下: AuthcodeView.h #imp ...

  3. ios本地文件内容读取,.json .plist 文件读写

    ios本地文件内容读取,.json .plist 文件读写 本地文件.json .plist文件是较为常用的存储本地数据的文件,对这些文件的操作也是一种常用的基础. 本文同时提供初始化变量的比较标准的 ...

  4. iOS开发技术分享(1)— iOS本地数据存储

    iOS开发技术分享(1)— iOS本地数据存储 前言: 我本是一名asp.net程序员,后来加入了iOS游戏开发队伍,到现在也有一年多的时间了.这一年来,每天都干到2.3点钟才睡觉,不为别的,只为了学 ...

  5. IOS 本地通知 UILocalNotification

    IOS 本地通知 UILocalNotification [本文章第四部分中的代码逻辑来自网上的借鉴,并非我自己原创] 大概一个月前,我开始跟着做IOS项目了.学习C++,了解Objective-C, ...

  6. iOS 检测文本中的 URL、电话号码等信息

    iOS 检测文本中的 URL.电话号码等信息 要检测文本中的 URL.电话号码等,除了用正则表达式,还可以用 NSDataDetector. 用 NSTextCheckingResult.Checki ...

  7. iOS中获取本地通讯录联系人以及汉字首字母排序

    iOS中获取手机通讯录中的联系人信息: /*** 加载本地联系人*/ - (void)loadLocalContacts { //新建一个通讯录类 ABAddressBookRef addressBo ...

  8. iOS富文本组件的实现—DTCoreText源码解析 数据篇

    本文转载 http://blog.cnbang.net/tech/2630/ DTCoreText是个开源的iOS富文本组件,它可以解析HTML与CSS最终用CoreText绘制出来,通常用于在一些需 ...

  9. iOS 本地通知 操作

    iOS 本地通知 操作 1:配置通知:然后退出程序: UILocalNotification *localNotif = [[UILocalNotification alloc] init]; loc ...

随机推荐

  1. nginx如何做到TCP的负载均衡

    原文:https://blog.csdn.net/u011218159/article/details/50966861   TCP 的 负载均衡   这个片段描述了如何通过nginx plus进行负 ...

  2. spring-data-jpa快速入门(二)——简单查询

    一.方法名解析 1.引言 回顾HelloWorld项目中的dao接口 public interface GirlRepository extends JpaRepository<Girl, In ...

  3. WPF 事件触发命令

    方法一使用mvvmlight: xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Int ...

  4. 【python】logging日志模块写入中文编码错误解决办法

    一.问题: 使用python的logging模块记录日志,有时会遇到中文编码问题错误. 二.解决办法: 在logging.FileHandler(path) 中添加指定编码方式 encoding='u ...

  5. C#数组 修改

    今天咱们了解下C#中的数组 后面会讲到集合.泛型集合 咱们分开来讲,免得出现混乱 讲完这三个,咱们再汇总一下,看看有什共同点和不同点 定义一个数组: ]; , , , , , , , , , }; 两 ...

  6. java基础解析系列(三)---HashMap

    java基础解析系列(三)---HashMap java基础解析系列 java基础解析系列(一)---String.StringBuffer.StringBuilder java基础解析系列(二)-- ...

  7. 【轮子狂魔】抛弃IIS,打造个性的Web Server - WebAPI/Lua/MVC(附带源码)

    引言 此篇是<[轮子狂魔]抛弃IIS,向天借个HttpListener - 基础篇(附带源码)>的续篇,也可以说是提高篇,如果你对HttpListener不甚了解的话,建议先看下基础篇. ...

  8. java学习(二)基础概念、语法

    对象 类的实例(通俗点讲,new出来的玩意好像都是对象?初学者的感觉,不造对错啊,有大神给我解释下可以啊) 类 class嘛,模板嘛,可以给对象实例的嘛 方法 行为,学编程的,方法,这玩意心里都懂吧, ...

  9. WebGL——osg框架学习一

    从今天开始,我们开始正式的学习osg框架,今天我们学习的是osg的渲染模块,我们来看一下代码结构. 所有DrawXXX的js模块都是渲染的模块,我们逐一来简单介绍一下,第一个Drawable.js,这 ...

  10. 关于UC浏览器兼容scroll事件问题

    经过本人查阅无数资料,最终得出一个比较简单,具有一定兼容性的结果. $(window).scroll(function( ) { var scrollTop = document.documentEl ...