9

很抱歉这个笼统的问题......我已经寻找了很长时间,但还没有找到任何我可以使用或轻松适应的东西。我真的很感激任何指示!

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

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

Lucene 似乎已针对 iOS 2 进行了最后一次更新……我什至不知道我是否能够自己重做它。也许。

Locayta 可能会很好用,但商业许可证是 1,000 美元,我可能不会很快用这个应用程序收回成本,因为它是一个利基市场。

谢谢!

4

2 回答 2

5

我们在我工作的地方偶然发现了同样的困境,但尚未决定解决方案。Locayta 似乎很有希望,但除此之外,我还研究了 SQLite 的 FTS3/FTS4。

唯一的问题似乎是缺少匹配部分单词的方法。很容易搜索包含整个单词的字段(例如,“paper”匹配“printer paper”、“paper punch”和“sketch paper”),或者以某字开头的单词(例如,“bi*”匹配“binder ", 和 "bicycle"),但没有内置的方式来匹配后缀。

如果您不需要该功能,FTS3/FTS4 可能会工作。

我看到您在后续中提到您的 SQLite 无法识别 FTS3(),我一开始也遇到了同样的问题。显然,默认情况下它没有捆绑到 iOS 版本中,而是您必须下载 SQLite3 合并,并将其手动包含在项目中。如在SQLite 的 iOS 版本中是否提供 FTS?

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

希望这可以帮助。

于 2013-04-15T20:09:18.273 回答
4

如果您可以将纯 C 代码转换为 iOS Objective-C,那么Apache Lucy(Lucene 的松散“C”端口)可能值得一看。

于 2013-04-17T22:51:20.883 回答