iphone - iOS 中的全文子串搜索

标签 iphone ios search substring full-text-search

我需要我的 iPhone/iPad 应用程序能够快速搜索大约 10,000 条记录(每条记录大约相当于一段文本),以查找记录中包含的任何子字符串。因此,如果记录包含单词“Flame”,则查询“lame”应该匹配。

我目前正在使用 SQLite,但是“LIKE %term%”搜索对于这么多记录来说太慢了。启用全文搜索似乎不能完全满足我的需求,因为 SQLite 仅支持前缀通配符(例如“Flam*”,而不是“*lame”)。

我尝试过使用一个巨大的文本 block (~350K),并执行 [NSString rangeOfString:...],我认为它使用了 Boyer-Moore 算法。这比“LIKE %term%”搜索要快,但仍然不是我希望的那种速度。

有什么方法或库可以实现这种可扩展的子字符串搜索,并且可以在 iPhone 上运行吗?

最佳答案

这里有许多不同的选项。我不知道每个的基准,所以你必须做一些测试。

首先是 SQLite 的 FTS3 扩展。这应该给你快速的索引全文搜索: http://regularrateandrhythm.com/regular-rate-rhythm-blog/sqlite3-fts-in-IOS4.html

那么,iOS 4 中引入的正则表达式呢:
http://developer.apple.com/library/ios/#documentation/Foundation/Reference/NSRegularExpression_Class/Reference/Reference.html

对于 iOS 4 之前的版本,您可以使用 RegexKitLite:
http://regexkit.sourceforge.net/RegexKitLite/index.html

如果您决定使用正则表达式,请查看有关如何优化它们的条目:
How to speed up iPhone regular expressions with NSRegularExpression?

关于iphone - iOS 中的全文子串搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5355330/

相关文章:

iphone - 检查本地设备的专用网络是否打开了某个端口(iPhone/ objective-c )

iphone - 如何在 iphone sdk 中使用 openlayers

iphone - 在 iPhone 应用程序中添加字体

ios - 有什么方法可以通过标准 API 从 iPhone SDK 获取自己的电话号码吗?

c# - 在 Window 上实现搜索功能的方法

iphone - 有什么方法可以增加Google Analytics(分析)为我的iPhone应用程序提供给我的异常描述文本的数量吗?

javascript - 如何通过 JavaScript/jQuery(或 PHP)检测 iPhone 6 和 6 Plus?

javascript - Cordova 应用终止事件

node.js - mongoose 使用一个搜索参数查找包含组合字段的文档

用于解析类似 Google 的搜索运算符的 PHP 库?