用于在iOS包中搜索全文的工具

对于一般化的问题,我很抱歉…我已经找了很长时间没找到任何我可以使用或者很容易适应的东西.我真的很感激任何指针!

我正在构建一个参考应用程序,它将包含几个纯文本格式的教科书.我希望用户能够执行搜索,并获得一个包含结果列表的表格.我有一个工作原型,但我写的搜索逻辑并不是那么聪明,它一直试图让它变得更好.

这显然是一个相当普遍的问题,所以我正在寻找一种可以适应任务的工具.到目前为止,我发现了Lucene(http://vafer.org/blog/20090107014544/)和Locayta(http://www.locayta.com/iOS-search-engine/locayta-search-mobile/)

Lucene似乎最近更新了iOS 2 …我甚至不知道我是否能够自己重做它.也许.

Locayta可能工作得很好,但是商业许可证是1000美元,我可能不会很快用这个应用程序来补偿它,因为它是一个利基市场.

谢谢!

解决方法

我们偶然发现了我工作的困境,还没有决定解决方案.
Locayta似乎很有希望,但除此之外,我也研究过sqlite的FTS3 / FTS4.

唯一的问题似乎是缺乏匹配部分单词的方法.搜索包含整个单词的字段(例如“纸张”匹配“打印纸”,“纸张打孔”和“草图纸”),或者以某些东西开头的单词(例如“bi *”匹配“binder”)很容易“和”自行车“),但没有内置的方法来匹配后缀.

如果您不需要该功能,FTS3 / FTS4可能会起作用.

我看到你在后续文件中提到你的sqlite没有识别FTS3(),我起初遇到了同样的问题.
显然,认情况下它并没有捆绑到iOS版本中,而是必须下载sqlite3合并,并手动将其包含在项目中.如在is FTS available in the iOS build of SQLite?发现

另请注意,认情况下不启用sqlITE_ENABLE_FTS3变量,您只需将其添加到配置中,详见http://www.sqlite.org/fts3.html#section_2

希望这可以帮助.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...