我正在研究通过91,000个条目搜索的iPhone应用程序。我使用的是CoreData,它的工作原理非常漂亮,除了需要大约2秒来创建数据表。我将它编程为在后台执行搜索,并添加了一个微调器,但用户体验仍然不理想。我尝试使用FMDB工作正常,但没有更快。CoreData搜索速度太慢
本质上,我创建了我的xcdatamodel在迅速,添加我的条目,它工作正常。 (下面的代码键入写意,很抱歉,如果有错别字)
我然后创建一个NSFetchedResultsController:
let moc =(UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext
searchText: String? = "name contains[c] \"seachText\""
nsfr = NSFetchRequest(entityName: "Example")
nsfr.fetchBatchSize = 20
nsfr.predicate = NSPredicate(format: searchText!)
nsfrc = NSFetchedResultsController(fetchRequest: nsfr, managedObjectContext: moc, sectionNameKeyPath: "section", cacheName: nil)
在我的UITableViewController类(符合NSFetchedResultsControllerDelegate)
然后:
nsfrc.delegate = self
nsfrc.performFetch()
self.tableView.reloadData()
有什么办法来加速请求,比如哈希数据库?任何缩小搜索范围的方法?我的数据包含数千个句子,我希望能够搜索其中的部分字符串。例如,“laz fo”应该找到“懒惰的棕色狐狸”。现在“azy own”也会找到字符串,这不是必需的。任何帮助,将不胜感激!即使将时间缩短一半也会很棒。