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,事实上也就是目录. 其算法应该叫做“倒排索引”,这个其实也类似于搜索引擎里面的基 ...
随机推荐
- 20155212 实验二 Java面向对象程序设计
20155212 实验二 Java面向对象程序设计 单元测试 三种代码 用编程去解决问题,必须学会写三种码: 伪代码 产品代码 测试代码 例: MyUtil 类解决一个百分制成绩转成"优.良 ...
- 20155234 2016-2017-2 《Java程序设计》第3 周学习总结
20155234 2006-2007-2 <Java程序设计>第3周学习总结 教材学习内容总结 类是对象的设计图,对象是类的实例. 参考名称与对象数据成员同名时,可以在数据成员前使用thi ...
- 20155317 2016-2017-2《Java程序设计》课程总结
20155317 2016-2017-2<Java程序设计>课程总结 每周作业链接汇总 新玮的首发博客:对师生关系的期望. C语言与java 20155317 王新玮第二次:语言掌握调查 ...
- 自己在UWP程序上调用usb转串口的路程
之前一直是在普通的framework环境下写串口,使用的类为 SerialPort 这个类大家可能比较熟悉.但是在UWP的开发里,使用的是 SerialDevice 这个类,是不一样的. 1. 清单文 ...
- struts常用知识
一,struts2是什么? struts2是一个控制框架,相当于连接底层和显示层,控制页面和数据展示 二,为什么用struts2? jsp+javabean模式:jsp里的小脚本java代码太多,页面 ...
- Python中的对象引用、浅拷贝与深拷贝
最近项目中遇到一个Python浅拷贝机制引起的bug,由于对于Python中对象引用.赋值.浅拷贝/深拷贝机制没有足够的认识,导致调试了很久才发现问题,这里简单记录一下相关概念. 在Python的设计 ...
- 创建Springmvc项目时,特殊拦截器失效情况的原因及解决办法
最近开发一个新项目时,搭建springmvc框架时,遇到一个拦截器失效的情况困扰了两天.现在解决,特此记录一下. 拦截器不生效的情况描述: 设置登录拦截的时候,首先登录接口肯定是不用拦截的.所以需要在 ...
- PL/SQL编辑数据"这些查询结果不可更新,请包括ROWID或使用SELECT...FOR UPDATE获得可更新结果"处理
只要有人用了: select t.* from 表名 t where 字段=xxx for update 而不是: select t.rowid,t.* from 表名 t where 字段=x ...
- 【实用】巧用For xml 生成HTML代码
可以利用SQL的For xml直接生成HTML结构,比如我想生成如下结构: <li> <img src="..."/> <input type=&qu ...
- TW实习日记:第八天
今天早上主要是接着做昨天的微信端网页预览附件,听同事说当打包代码放入服务器上后,就不存在跨域问题了,也就懒得自己写接口了,那么就希望自己能一次过吧...结果写着写着,发现开发文档中关于预览文件的方法, ...