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,事实上也就是目录. 其算法应该叫做“倒排索引”,这个其实也类似于搜索引擎里面的基 ...
随机推荐
- C++ —— 非类中使用const定义常量的初始化,以及#define和typedef的区别
总结一下在非类中使用const关键字定义常量时的初始化问题,亲测VS2015.顺便记录#define宏和typedef的区别. 1 首先对const声明的常量的初始化做简单小结: , w2 = , w ...
- ACM--移动桌子--贪心--HDOJ 1050--Moving Tables
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Problem Descript ...
- 动手打造轻量web服务器(二)路由
tomcat启动慢?自己动手打造轻量web服务器(一) 上篇讲了怎么做一个最简单的web服务器,这篇就是在上篇加上URL路由功能(什么是路由?) 首先,根据http获得请求行 val scanner ...
- 20155232 2016-2017-2 《Java程序设计》第2周学习总结
20155232 2016-2017-2 <Java程序设计>第2周学习总结 教材学习内容总结 类型 基本类型 整数(short.int.long) 字节(byte) -128~127 字 ...
- 20155322 2017-2018-1《信息安全系统设计》第九周 Linux命令:pwd命令学习与简单实现
pwd命令学习 功能 Linux中用 pwd 命令来查看"当前工作目录"的完整路径. 格式 pwd [选项] 实例 用 pwd 命令查看默认工作目录的完整路径: 用 pwd 命令查 ...
- C++ OI图论 学习笔记(初步完结)
矩阵图 使用矩阵图来存储有向图和无向图的信息,用无穷大表示两点之间不连通,用两点之间的距离来表示连通.无向图的矩阵图是关于主对角线对称的. 如图所示: 使用dfs和bfs对矩阵图进行遍历 多源最短路径 ...
- 利用Anaconda进行python爬虫环境的配置-安装scrapy
1.下载Anaconda,下载地址:https://www.continuum.io/downloads 2.安装anaconda. 3.安装scrapy
- Spring学习(四)-----Spring Bean引用同xml和不同xml bean的例子
在Spring,bean可以“访问”对方通过bean配置文件指定相同或不同的引用. 1. Bean在不同的XML文件 如果是在不同XML文件中的bean,可以用一个“ref”标签,“bean”属性引用 ...
- Java EE JSP编程基础
一.JSP编程介绍 JSP是实现普通静态HTML和动态HTML混合编码的技术,可以说是Servlet的一种变形,相比Servlet它更像普通的Web页面.JSP在第一次运行时会花费很长时间,原因在与其 ...
- PHP精确到毫秒秒杀倒计时实例
精确到毫秒秒杀倒计时PHP源码实例,前台js活动展示倒计时,后台计算倒计时时间.每0.1秒定时刷新活动倒计时时间. PHP: // 注意:php的时间是以秒算.js的时间以毫秒算 // 设置时区 da ...