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

2.PermissiveResearch的使用
2.1.导入核心.h文件

2.2.在文本输入控件发生变化时我们开始实现文本检索

2.3.需要检索的数据仓库初始化
#pragma mark 检索数据仓库初始化
/**
* 检索数据初始化
*/
-(void)rebuildDatabase{ //你自己代码里需要检索的数据
NSArray *allmenus = self.mainDelegate.gbdata.objMenu.MenuItemArray; //将自己代码里需要检索的数据对象添加进检索数据仓库,并且关联上name for (MenuItemObject *objmenu in allmenus) { //第一个参数为你需要检索的对象 obj ,第二个为你对象obj.name (例如根据 name.检索)
[[PermissiveResearchDatabase sharedDatabase] addRetainedObjet:objmenu forKey:objmenu.displayname];
}
}
2.4.开始检索
//1.首先清空搜索结果数组
[self.arraySearchMenu removeAllObjects];
//2.将文本控制用户输入的字符进行简单处理
NSString *final = [textField.text stringByReplacingCharactersInRange:range withString:string];
//3.开始检索
NSLog(@"Start search by matrix");
//4.消除所有
[[ScoringOperationQueue mainQueue] cancelAllOperations];
//5.初始化
ExactScoringOperation *ope = [[ExactScoringOperation alloc] init];
//6.要检索的字符串赋值
ope.searchedString = final;
//7.调用检索block 返回检索到的结果
SearchCompletionBlock block = ^(NSArray *results) {
dispatch_async(dispatch_get_main_queue(), ^{
//8.注意:这里统一检索出来的对象 都是PermissiveObject
//你自己需要的检索出来真在的对象是在PermissiveObject.refencedObject里
NSMutableArray *permissiveObj = [NSMutableArray arrayWithArray:results];
//9.取出检索到你每个需要的数据 然后添加进检索结果的数据
for (PermissiveObject *perobj in permissiveObj) {
MenuSearchObject *obj=[[MenuSearchObject alloc]init];
MenuItemObject *objMenu = perobj.refencedObject;
//测试log
NSLog(@"%@",objmenu.displayname);
obj.menuid=[NSNumber numberWithInteger:objMenu.menuid.integerValue];
[self.arraySearchMenu addObject:obj]; // add filter menu objection
}
//10.刷新显示检索结果的tableView
[self.searchTableview reloadData];
NSLog(@"End search by matrix");
});
};
//检索完成
[ope setCustomCompletionBlock:block];
//添加操作 End.
[[ScoringOperationQueue mainQueue] addOperation:ope];
iOS- 如何建立索引实现本地文本搜索引擎,允许容错搜索?的更多相关文章
- 用Lucene4.5对中文文本建立索引
这里需要完成一个能对txt文本建立索引,并能完成检索查询.完成这个功能,使用的是Lucene4.5,同时使用其自带的中文分析器. 准备工作是在一个文件夹里面建一些txt文件,这是我的文件结构: 首先要 ...
- 使用PHP+Sphinx建立高效的站内搜索引擎
1. 为什么要使用Sphinx 假设你现在运营着一个论坛,论坛数据已经超过100W,很多用户都反映论坛搜索的速度非常慢,那么这时你就可以考虑使用Sphinx了(当然其他的全文检索程序或方 ...
- Everything | 本地文件搜索引擎工具
文章目录 本地文件搜索软件 下载地址 注意 本地文件搜索软件 您是否觉得 Windows 自带的文件搜索比较慢?! 今天,给大家分享一款超快好用的本地文件搜索软件:Everything Search ...
- Lucene建立索引搜索入门实例
第一部分:Lucene建立索引 Lucene建立索引主要有以下两步:第一步:建立索引器第二步:添加索引文件准备在f盘建立lucene文件夹,然后 ...
- 开源 iOS 项目分类索引大全 - 待整理
开源 iOS 项目分类索引大全 GitHub 上大概600个开源 iOS 项目的分类和介绍,对于你挑选和使用开源项目应该有帮助 系统基础库 Category/Util sstoolkit 一套Cate ...
- lucene 建立索引的过程
时间 -- :: CSDN博客 原文 http://blog.csdn.net/caohaicheng/article/details/ 看lucene主页(http://lucene.apach ...
- solr中通过SFTP访问文件建立索引
需求: 从oracle数据库中根据记录的文件名filename_html(多个文件以逗号隔开),文件路径path,备用文件名bakpath中获取 主机172.21.0.31上对应的html文件内容,并 ...
- ORACLE 全局索引和本地索引
Oracle数据库中,有两种类型的分区索引,全局索引和本地索引,其中本地索引又可以分为本地前缀索引和本地非前缀索引.下面就分别看看每种类型的索引各自的特点. 全局索引以整个表的数据为对象建立索引,索引 ...
- sqlite优化记录:建立索引加快查询速度
凡是数据库中,索引的存在就是为了提高查询速度的,数据库的索引有点类似于书本上面的目录的概念,因为在英文中都是index,事实上也就是目录. 其算法应该叫做“倒排索引”,这个其实也类似于搜索引擎里面的基 ...
随机推荐
- springboot配置kafka生产者和消费者详解
在原有pom.xml依赖下新添加一下kafka依赖ar包 <!--kafka--> <dependency> <groupId>org.springframewor ...
- python迭代器生成器
1.生成器和迭代器.含有yield的特殊函数为生成器.可以被for循环的称之为可以迭代的.而可以通过_next()_调用,并且可以不断返回值的称之为迭代器 2.yield简单的生成器 #迭代器简单的使 ...
- 20155207实验2 Windows口令破解
20155207实验2 Windows口令破解 实验目的 了解Windows口令破解原理 对信息安全有直观感性认识 能够运用工具实现口令破解 实验原理 口令破解方法 口令破解主要有两种方法:字典破解和 ...
- 20155216 2016-2017-2 《Java程序设计》第三周学习总结
教材学习内容总结 区分基本类型与类类型 类类型是自己定义产生的,基本类型是long,int,double等类型. 在类的定义过程中,可直接用class XXX {}对每个序定义的值域成员进行定义.这样 ...
- 20155217 2016-2017-2 《Java程序设计》第2周学习总结
20155217 2016-2017-2 <Java程序设计>第2周学习总结 教材学习内容总结 Java中的基本类型主要可分为整数.字节.浮点数.字符与布尔. 整数可分为short整数(占 ...
- 初识Linux的感受与对它的印象——20155328张钰清
之前从未接触过虚拟机的我,由于这次寒假预备作业,稍稍地认识了一下Linux操作系统. 在自己笔记本上安装Linux操作系统 根据老师提供的<基于VirtualBox虚拟机安装Ubuntu图文教程 ...
- WPF MVVM从入门到精通1:MVVM模式简介
原文:WPF MVVM从入门到精通1:MVVM模式简介 WPF MVVM从入门到精通1:MVVM模式简介 WPF MVVM从入门到精通2:实现一个登录窗口 WPF MVVM从入门到精通3:数据绑定 W ...
- 北京Uber优步司机奖励政策(4月14日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- Apache入门篇(三)之apache2.4.33的新特性解析与虚拟主机实战
1.http 2.4新特性 新特性: (1) 在编译时可以将多个MPM构建为可加载模块,可以在运行时通过LoadModule指令配置所选的MPM: (2) 2.2版本的event MPM在实验阶段,到 ...
- iOS 小技巧
投影效果 scanBtn.layer.shadowColor = [UIColorblackColor].CGColor;//shadowColor阴影颜色 scanBtn.layer.sha ...