问题标签 [fts3]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
3296 浏览

android - 普通 SQLite 与 FTS3 表

我有一些数据已经组织在我的应用程序的 SQLite 表中。当我想在我的应用程序中实现搜索功能时,我发现Searchable Dictionary示例使用了 FTS3 虚拟表。我从来没有使用过 FTS3,我只是想知道有什么区别。当他们说 FTS3“不支持列约束,因此不能声明主键”时,这是否意味着我不能将列设为类型(即文本、整数等)?如何指定唯一标识符 (id)?我应该以不同于普通表的方式管理/组织数据吗?如果我想用 FTS3 实现搜索功能,它是否意味着替换我的原始表?

0 投票
3 回答
1301 浏览

android - FTS3 中的多列匹配

我有一个简单的三列数据库:标题、数据、信息。我将它们存储在 SQLite FTS3 数据库中,这样我就可以轻松地执行全文搜索。我的应用程序基于 Android 的 Searchable Dictionary 示例。我不知道该怎么做的一件事是如何跨两列搜索(匹配)。我基本上想查询并在标题和数据列中搜索它。以下是准备查询的方法:

如果我不遵循KEY_TITLE + " MATCH ?"选择的确切格式,尽管 FTS3 文档说其他方法可以工作,但其他任何方法都不会起作用。如何在 Android 中设置此选择以跨两列进行搜索?我试过添加OR,但我只是得到一个 SQL 逻辑错误。非常感谢!

0 投票
1 回答
3276 浏览

sqlite - SQLite 全文搜索索引

我目前有一个诊断表。我想使用 FTS 使代码和描述字段可搜索。不过据我了解,FTS 表不支持索引,我需要能够非常快速地通过诊断 ID 查找诊断。我是否必须创建第二个虚拟表,其中所有数据都被复制以进行全文搜索,或者我是否错过了一个无需复制所有诊断代码和描述的解决方案?

0 投票
1 回答
160 浏览

android - Android 如何在另一个支持 FTS 的情况下转换现有的转储数据库?

我有一个 .db sqlite 文件,我可以从 sdcard 导入。如何添加 FTS 支持?我必须重新创建所有表?请给一些提示。

0 投票
2 回答
228 浏览

java - FTS3 | rowid 问题 | 删除不工作

由于我实现了搜索功能,我最近将我的数据库更新为 FTS3。

我的 FTS3 表:

我总是从我的列表视图中删除条目ContextMenu。我使用了这样的方法:

方法,info.id不要给我位置,所以我将其更改为info.position. 位置是正确的,但删除不起作用。好的,比我尝试简单的删除而不是通过 Android 方法。

也不行。似乎COL_KEY_ID = BaseColumns._IDFTS3 中不再存在具有自动递增编号的列?我想通了,我可以使用rowid,但它没有按预期工作。如果我删除我的第一个条目,下面的条目会被奇怪地删除。

我怎样才能让它像以前一样工作? 编辑:现在找到修复..

0 投票
1 回答
903 浏览

android - 无法从 sqlite fts3 检索特殊字符

我在我的场景中遇到了一些特殊字符的问题。我有一个使用 fts3 创建的 sqlite 数据库。

当我使用SELECT col_1, col_2, offsets(table) FROM table WHERE table MATCH 'h*' LIMIT 50;

我能够得到以h开头的单词。

但是当我使用

我没有得到以@开头的字符串。

我哪里错了?任何有关方法的指针都会很棒。

0 投票
2 回答
2691 浏览

sqlite - SQLite3 FTS3/FTS4 匹配信息示例

我正在使用 SQLite3 的 FTS4 模块,并且 matchinfo() 辅助函数的示例有问题。

目前我只是试图从http://www.sqlite.org/fts3.html#matchinfo运行 matchinfo() 示例,但它不起作用。

我在带有 SQLite 3.5.9(预编译版本)的 Windows 7、带有 SQLite 3.6.22 的 Ubuntu Linux OS 10.04.4 和带有 SQLite 3.7.10(均为手动编译版本)的 Mac OS 10.6.8 上进行了尝试。在所有情况下都启用了 FTS4 模块,并且文档中的所有内容都可以正常工作(偏移量和片段功能、全文搜索查询等)。在 Ubuntu 和 Mac OS 上,使用 matchinfo() 示例时我没有得到任何结果。在 Windows 上,命令行给了我奇怪的字符。我通过以下方式进行了尝试:使用 PHP 脚本,使用 NaviCat for SQLite3 和命令行本身。在每种情况下都是一样的。

这是我用于示例的 PHP 代码:

我在网上没有发现任何关于这个问题的信息。因此,我不知道如何解决它。也许是因为 PHP 在处理 BLOB 方面存在问题?

我希望你们能帮助我。谢谢!

0 投票
0 回答
336 浏览

ios - 使用启用 FTS3 的 SQLite

我对使用启用 FTS3 的 SQLite 有一些疑问。正如这个链接所暗示的,如果我使用 FTS3 或 FTS4 扩展,SQLITE FTS3我可以显着减少数据库获取时间(从 22 秒到 0.003 秒)。我想知道如何使用这个扩展,以及这个和普通的sqlite表在查询和数据存储方面的区别。我已经在使用 sqlite 数据库,但是由于记录在 80000 左右,所以我现在想使用 FTS3。我需要进行哪些更改才能迁移到 fts3?

0 投票
1 回答
934 浏览

ios - 为 iOS 压缩加密的 SQLite FTS3 数据库

我的应用程序使用带有 FTS3 的 SQLite 数据库进行产品搜索。我正在尝试使用 SQLCipher 加密数据库,但这会导致数据库大小膨胀(7mb --> ~20mb)。

似乎没有一种很好的方法来压缩加密的 FTS SQLite 数据库。有人对此有什么建议吗?我必须缩小它以将应用程序保持在 20mb 3g 下载限制之下。

谢谢!

0 投票
1 回答
2450 浏览

sqlite - System.Data.Sqlite 和 FTS4

为什么当我使用全文搜索语法编写查询时,例如:

查询结果总是返回0行?

我正在使用 VBnet 和来自sqlite.org的最新 Ado.net 提供程序

问题是当我尝试使用外部工具进行查询时,它运行良好(使用 sqlite 3.7.9)。

有什么线索吗?提前致谢