对于一般化的问题,我很抱歉…我已经找了很长时间没找到任何我可以使用或者很容易适应的东西.我真的很感激任何指针!
我正在构建一个参考应用程序,它将包含几个纯文本格式的教科书.我希望用户能够执行搜索,并获得一个包含结果列表的表格.我有一个工作原型,但我写的搜索逻辑并不是那么聪明,它一直试图让它变得更好.
这显然是一个相当普遍的问题,所以我正在寻找一种可以适应任务的工具.到目前为止,我发现了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.
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
希望这可以帮助.