对于一般化的问题感到抱歉......我一直在寻找很长一段时间并且找不到任何我可以使用或者很容易适应的东西。我非常感谢任何指针!
我正在构建一个参考应用程序,它将包含几个纯文本格式的教科书。我希望用户能够执行搜索,并获得一个包含结果列表的表格。我有一个工作原型,但我写的搜索逻辑并不是那么聪明,它一直试图让它变得更好。
这显然是一个相当普遍的问题所以我正在寻找一种能够适应任务的工具。到目前为止,我发现了Lucene(http://vafer.org/blog/20090107014544/)和Locayta(http://www.locayta.com/iOS-search-engine/locayta-search-mobile/)
Lucene似乎最近更新了iOS 2 ...我甚至不知道我是否能够自己重做。也许
Locayta可能效果很好,但商业许可证是1000美元,我可能不会很快用这个应用程序来补偿它,因为它是一个利基市场。
谢谢!
答案 0 :(得分:5)
我们偶然发现了我工作的困境,还没有决定解决方案。 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
希望这有帮助。
答案 1 :(得分:4)
如果您可以将纯C代码翻译为iOS Objective-C,那么Apache Lucy(Lucene的松散“C”端口)可能值得一看。