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,事实上也就是目录. 其算法应该叫做“倒排索引”,这个其实也类似于搜索引擎里面的基 ...
随机推荐
- appache 端口 更改
外网访问---->hosts文件映射服务名(127.0.0.1 xiaotian.cn)-->appache中httpd文件监听相关端口号(*:8080)--->appache中的v ...
- 【二】调通单机版的thrift-C++版本
[任务2]调通单机版的thrift-C++版本 [任务2]调通单机版的thrift-C++版本 创建文件 安装boost开发工具 拷贝文件 [可忽略此步骤,如果c++代码直接编译无误的话] 编译 创建 ...
- opencv移植(一)cmake安装
原文:https://blog.csdn.net/Guet_Kite/article/details/78667175?utm_source=copy 版权声明:本文为博主原创文章,转载请附上博文链接 ...
- Executors 挖坑
Executors 挖坑 线程频繁的创建销毁是有代价的,所以Java为我们提供了线程池 线程池构造方法很多 我们一般使用Executors的工厂方法: public static ExecutorSe ...
- 随机队列 ADT接口 数组实现
Random queue ADT接口 RANDOM.h #include <stdlib.h> #include "Item.h" #include <time. ...
- TCGA数据批量下载
由于经常需要涉及到TCGA数据的分析,我简单的整理了一下数据批量下载的文件后缀. cancer_name <- "SKCM" output_path <- paste0 ...
- 快排(python)
用python写了个快排,第一次发现python居然可以这么简洁. def quicksort(arr): if len(arr) <= 1: return arr pivot = arr[le ...
- 最近公共祖先 lca (施工ing)
声明 咳咳,进入重难点的图论算法之一(敲黑板): 题目: 洛谷 P3379 先放标程,施工ing,以后补坑!!!(实在太难,一个模板这么长 [ 不过好像还是没有 AC自动机 长哎 ],注释都打半天,思 ...
- 20155209实验一《Java开发环境的熟悉》实验报告
20155209实验一<Java开发环境的熟悉>实验报告 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 实验步骤一 ...
- 20155211 2016-2017-2 《Java程序设计》第2周学习总结
20155211 2016-2017-2 <Java程序设计>第2周学习总结 教材学习内容总结 通过对教材的阅读,我理解到Java中对于整数,浮点数等类型的定义与c语言基本相同. 对字面常 ...