我有一个 ~32mb 的大数据库,其中包含 4 种语言的大量文本。包括阿拉伯语和乌尔都语。我需要以最有效的方式(速度和大小)搜索此文本。
我正在考虑 FTS,并试图找出实现它的方法。现在我正在阅读 http://www.sqlite.org/fts3.html#section_1_2关于它。
在我看来,FTS 表就像一个用于索引所有不同单词的普通表。所以我的问题是:
1) 如果要填充 FTS 我必须自己做所有的插入,那么为什么不制作我自己的索引词表,有什么区别?
回答:是的,有很多优点,许多内置功能很有帮助。例如,对于排名等,搜索词干以及它在 android 中如何工作的透明性使得 FTS 方法更具吸引力。
2) 在 google 文档上,我读到它是一个虚拟的内存表,现在这将是巨大的,对吧……但它没有在 SQLite 网站上提到这一点。那么它是什么?
3) 是否有一种简单的方法可以从我的专栏中生成所有不同的词?
4) FTS 会正确处理阿拉伯语单词吗?
最佳答案
- FTS 允许快速搜索词;普通索引只允许搜索整个值或值的开头。 如果您的表在每个字段中只有一个词,那么使用 FTS 就没有意义。
- FTS 是一个虚拟表,但不是内存表。
- 您可以使用 fts4aux table 从全文索引中获取单个术语.
- 默认tokenizer仅适用于 ASCII 文本。 您必须测试 ICU 或 UNICODE61 分词器是否可以处理您的数据。
关于android - FTS 相对于定制解决方案的优势是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20145543/