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. C语言实现随机数

    最近在看<The C Programming Language>这本书,看到一个关于随机数的知识点,有种豁然开朗的感觉.以前总靠死记硬背,也不明白为啥是这样,而且总把srand()遗漏.相 ...

  2. ACM1001:Sum Problem

    Problem Description In this problem, your task is to calculate SUM(n) = 1 + 2 + 3 + ... + n.   Input ...

  3. 课下测试ch01修改补交

    由于当时学习态度有问题,没有注意到第一次的课下测试,虽然在当周的总结中就进行补交,但是当时态度并没有很认真,可能没有引起老师的注意,现在重新修改,望老师谅解. (单选题 | 1 分) Amdahl定律 ...

  4. 2017战略No.1:坚定不移地走全产业链发展路线

    编者按:2016年9月9日,首次公开表达"我想走全产业链发展路线"的想法. 这几个月,认真思考了下这个决定背后的原因.目的和价值. 付出常人5倍以上的努力,先抓住"技术研 ...

  5. BZOJ1026_windy数_KEY

    题目传送门 数位DP,其实只要求1~A-1和1~B就可以了.两数相减即为答案. 考虑怎们求1~A. 设f[i][j]表示到第i位,为j的windy数总数. 由前一位差值大于1的方程转移. 但是统计答案 ...

  6. Distributed1:链接服务器

    链接服务器(Linked Server)允许访问针对OLE DB数据源的分布式异构查询, 通过使用sys.sp_addlinkedserver创建链接服务器后,可以对此服务器运行分布式查询. 如果链接 ...

  7. Zabbix实战-简易教程--日志类

    一.主动模式和被动模式介绍 要监控日志,必须使用主动模式,那么,什么是主动模式?什么是被动模式呢? 1.主动模式和被动模式 主动模式 主动模式通讯过程: ● Agent打开TCP连接(主动检测变成Ag ...

  8. asp.net core发布到docker报Microsoft.ApplicationInsights.AspNetCore miss的错误

    dotnet core 2.1的asp.net core在docker下部署的时候发生下面的错误. Error: An assembly specified in the application de ...

  9. TPO-20-Apply for the undergraduate research fund

    /*    加粗:语音部分 *    红色:单词部分 *    斜体:语法部分 *    下划线:信号词/句 */ 第 1 段 1.Listen to a conversation between a ...

  10. 2.5 Oracle之存储过程和MERGE INTO语句

    一.MERGE INTO语句 1.merge into语句的功能:我们操作数据库的时候,有时候会遇到insert或者Update这种需求.我们操纵代码时至少需要写一个插入语句和更新语句并且还得单独写方 ...