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

1.前言  

先闲说几句,最近北京的雾霾真是大,呛的我这攻城师都抗不住了。各位攻城师们一定要爱护好自己的身体!空气好时,少坐多动。

如果条件好的话,最好让你们BOSS搞个室内空气净化器。因为那几天一般的室内雾霾指数也是高的吓人T T,哎不多说。

转正文>>

此文接本博客上篇

iOS- 如何建立索引实现本地文本搜索引擎,允许容错搜索?

http://www.cnblogs.com/qingche/p/4530826.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- 如何建立索引实现本地文本搜索引擎,允许容错搜索?

http://www.cnblogs.com/qingche/p/4530826.html

实现效果

有什么问题欢迎留言,有空我会一起回答!

作者: 清澈Saup
出处:http://www.cnblogs.com/qingche/
本文版权归作者和博客园共有,欢迎转载,但必须保留此段声明,且在文章页面明显位置给出原文连接。

时间: 2024-08-06 21:23:18

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

css之文本缩进 | 文本对齐 | 上划线 | 下划线 | 删除线 | 首字母大写 | 全部变大写 | 全部变小写

1.文本缩进: 举例: 如果是整个段落缩进: 要实现下面的效果: -40px 2.文本对齐: 举例: 3.文本装饰: 举例: 删除线: 4.文本变形: 举例: 全部变大写: 全部变小写:

iOS本地数据存取,这里就够了

iOS本地数据存取,看这里就够了 应用沙盒 每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离.应用必须待在自己的沙盒里,其他应用不能访问该沙盒 应用沙盒的文件系统目录,如下图所示(假设应用的名称叫Layer) 应用沙盒的文件系统目录 应用沙盒结构分析 应用程序包:(上图中的Layer)包含了所有的资源文件和可执行文件 Documents:保存应用运行时生成的需要持久化的数据,iTunes同步设备时会备份该目录.例如,游戏应用可将游戏存档保存在该目录 tmp:保存应

IOS 本地通知

在苹果的Mac OSX 和IOS开发的API中有三个不同的"通知",包括:广播通知,本地通知和推送通知. 本地通知只是应用所在设备上给用户通知,而推送通知是远程通知,他是由远程服务器推送过来的 本节主要是讲的本地通知,虽然本地通知并没有任何的网络通信,但是他在编程方面与后面要介绍的推送通知非常相似.我们的例子中有三个按钮,"计划通知开始"按钮开启计划通知,他在10秒钟后到达."停止所有计划通知"按钮式停止和取消已经开始的计划通知."立刻

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

用于ios本地动态生成验证码,效果如下: demo.gif 导入CoreGraphics.framework用于绘制图形 封装UIView,便捷使用,代码如下: AuthcodeView.h #import <UIKit/UIKit.h> @interface AuthcodeView : UIView @property (strong, nonatomic) NSArray *dataArray;//字符素材数组 @property (strong, nonatomic) NSMutabl

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

添加本地推送 ///本地添加 -(void)addLocalPushNotification:(UIButton*)sender; { NSLog(@"%s",__FUNCTION__); UILocalNotification* localNotification=[[UILocalNotification alloc]init]; if (localNotification) { //设置时间当前加20秒 NSDate* pushDate=[NSDate dateWithTimeI

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

本文转载 http://blog.cnbang.net/tech/2630/ DTCoreText是个开源的iOS富文本组件,它可以解析HTML与CSS最终用CoreText绘制出来,通常用于在一些需要显示富文本的场景下代替低性能的UIWebView,来看看它是怎样解析和渲染HTML+CSS的,总体上分成两步: 数据解析—把HTML+CSS转换成NSAttributeString 渲染—用CoreText把NSAttributeString内容渲染出来,再加上图片等元素 本篇先介绍第一步,数据解

IOS 本地通知UILocalNotification

//发送通知    UILocalNotification *notification=[[UILocalNotification alloc] init];       if (notification!=nil) {         NSDate *now=[NSDate new];         notification.fireDate=[now dateByAddingTimeInterval:10];//10秒后通知        notification.repeatInterv

iOS本地照片多选的实现

提示:iOS8须要更改一处代码.即设置scrollview滚动究竟部那块代码.大家可去掉再执行源代码 自己写起来还是蛮费事的! 本来打算使用网上流传非常久的ELCImagePickerController,可是有些功能不太符合我的要求,在上面改动呢,又认为思路不清晰.并且非常多代码看不懂,于是依照自己的思路写了一个演示样例!基本符合自己的期望,可是不知道在几百张照片的时候会不会卡顿,走一步算一步吧! 下面是预期效果图: 点击"选择照片",打开图片2:默认打开"本地相机&quo

iOS 富文本

富文本 http://pan.baidu.com/s/1pJnY8BL 把这里下载的文件夹拖进自己的工程 引入头文件 #import "OHAttributedLabel.h" #import "OHParagraphStyle.h" #import "OHTouchesGestureRecognizer.h" 引入这3个头文件 添加 CoreText.framework // 创建富文本string NSMutableAttributedStr