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];
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。