iOS- 如何建立索引實現本地文本搜尋引擎,允許容錯搜尋?,ios-索引

來源:互聯網
上載者:User

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/
本文著作權歸作者和部落格園共有,歡迎轉載,但必須保留此段聲明,且在文章頁面明顯位置給出原文串連。     

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.