android - FTS 相对于定制解决方案的优势是什么?

标签 android sqlite full-text-search arabic

我有一个 ~32mb 的大数据库,其中包含 4 种语言的大量文本。包括阿拉伯语和乌尔都语。我需要以最有效的方式(速度和大小)搜索此文本。

我正在考虑 FTS,并试图找出实现它的方法。现在我正在阅读 http://www.sqlite.org/fts3.html#section_1_2关于它。

在我看来,FTS 表就像一个用于索引所有不同单词的普通表。所以我的问题是:

1) 如果要填充 FTS 我必须自己做所有的插入,那么为什么不制作我自己的索引词表,有什么区别?

回答:是的,有很多优点,许多内置功能很有帮助。例如,对于排名等,搜索词干以及它在 android 中如何工作的透明性使得 FTS 方法更具吸引力。

2) 在 google 文档上,我读到它是一个虚拟的内存表,现在这将是巨大的,对吧……但它没有在 SQLite 网站上提到这一点。那么它是什么?

3) 是否有一种简单的方法可以从我的专栏中生成所有不同的词?

4) FTS 会正确处理阿拉伯语单词吗?

最佳答案

  1. FTS 允许快速搜索;普通索引只允许搜索整个值或值的开头。 如果您的表在每个字段中只有一个词,那么使用 FTS 就没有意义。
  2. FTS 是一个虚拟表,但不是内存表。
  3. 您可以使用 fts4aux table 从全文索引中获取单个术语.
  4. 默认tokenizer仅适用于 ASCII 文本。 您必须测试 ICU 或 UNICODE61 分词器是否可以处理您的数据。

关于android - FTS 相对于定制解决方案的优势是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20145543/

相关文章:

sqlite - 在大型 SQLite 数据库中查找每个表中的行数

sql - 如何判断 sqlite 列是否为 AUTOINCREMENT?

sql-server - 全文搜索速度慢 SQL V12 Azure

PHP + MySQL - 搜索脚本(全文)?

android - 错误 : OSCOKIRQ failed to assert

Android 无模式弹出窗口

java - Parcelable 在没有正确实现的情况下工作

android - Scala Actor 线程控制

sqlite - 添加 Cordova 插件时出错 "sqlite-connector.jar"未找到!”

Mysql全文搜索,自然语言模式 : order by "closeness"