我需要在包含标题(例如歌曲)的 2.000.000 个数据库行中进行搜索。我需要一个能够快速提供结果、适用于 iOS 平台并支持 unicode 字符集的解决方案。我正在考虑使用 sqlite 的 FTS 来解决我的问题。我愿意接受任何其他解决方案。
这是我目前所知道的:
假设 1:在 iOS >= 5 中默认启用 FTS - 这很好,我的最低要求是 5
假设 2:我假设,如果不自行编译 sqlite,则 unicode 折叠 (Ä => a) 不起作用
假设 3:我知道 FTS 不支持子字符串搜索,例如MATCH "*searchterm*"
假设 4:我读到默认的搬运工词干分析器对于 unicode 字符集(俄语、日语、中文……)非常糟糕
我目前的方法是使用LIKE "%searchterm%"
语句,因为它们最适合上述语言。不幸的是,它们有时往往很慢。
问题
问题 1:带有 FTS 的 sqlite 是正确的方法吗?还是应该在 cLucene / CoreData 等中进行调查?还有哪些其他选择?在 iOS 平台上搜索不同语言的标题的最佳方法是什么?
问题 2:我需要更换分词器吗?我可以在 iOS 平台上将 tokenizer 作为扩展加载吗?这可能是解决方案吗?
问题 3:在 iOS 5 / 6 上是否启用了 ICU 扩展的 sqlite fts?
问题 4: Apple 的内部搜索是如何工作的,例如在音乐播放器中?核心数据?