iOS- 如何建立索引實現本地文本搜尋引擎,允許容錯搜尋?,ios-索引
1.前言 實現一個本地搜尋引擎,允許容錯搜尋,也就是搜尋結果不需要和搜尋的關鍵字完全精準匹配。比如,搜尋”eric wang“,搜尋結果可以包括Erica Watts等等。搜尋效率十分高.這裡我們需要用到作者:Jerome Morissard的Lib,大家可以進我的github下載.https://github.com/SaupClear/qingchegithub 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];
如果還有什麼不明白歡迎在下面留言,有時間的我回一一回複,謝謝大家。 作者: 清澈Saup
出處: http://www.cnblogs.com/qingche/
本文著作權歸作者和部落格園共有,歡迎轉載,但必須保留此段聲明,且在文章頁面明顯位置給出原文串連。