问题标签 [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 投票
2 回答
4604 浏览

android - 如何快速将表从一个数据库复制到另一个数据库

我有一个数据库,一个表和另一个数据库。我需要将这个表从第一个数据库(带有简单表)复制到第二个。(在第二个数据库中,它应该是 fts3 表)。因此,我可以打开两个数据库,在第二个数据库中创建新的 fts3,然后通过 select -> insert 查询将所有数据从第一个数据库复制到第二个数据库。但是有没有其他方法可以更快更好地做到这一点?

0 投票
1 回答
5653 浏览

database - 如何将现有的 sqlite 数据库表转换为 fts3 之一?

我有正常的 sqlite 数据库,想使用 fts3。如http://www.sqlite.org/fts3.html教程中所述,必须创建 FTS 表才能使用此搜索功能。

有没有办法将现有表转换为 FTS 表?

0 投票
2 回答
1206 浏览

android - android sqlite fts3 如果不存在则创建表

我看到我们不能在创建虚拟表语句中使用“如果不存在”

如果我删除IF NOT EXISTS它,它只能工作一次。有没有其他选择。

0 投票
4 回答
7814 浏览

android - SQLite:大表中的高效子字符串搜索

我正在开发一个必须在一个大表中执行子字符串搜索的 Android 应用程序(大约 500'000 个带有街道和位置名称的条目,所以每个条目只有几个词)。

请注意,只有 20% 的条目在“名称”列中包含字符串。

执行以下查询几乎需要 2 分钟:

我现在尝试使用 FTS3 来加快查询速度。那是相当成功的,查询时间减少到 1 分钟(令人惊讶的是数据库文件大小只增加了 5%,这对我的目的也很好)。

问题是,FTS3 似乎不支持子字符串搜索,即如果我想在“foo bar”和“foobar”中找到“bar”,我只会得到“foo bar”,尽管我需要这两个结果。

所以实际上我有两个问题:

  1. 是否可以进一步加快查询速度?我的目标是查询 30 秒,但我不知道这是否现实......

  2. 如何使用 FTS3 进行真正的子字符串搜索?

0 投票
1 回答
2494 浏览

mysql - 最快的 SQL 全文搜索

我目前正在使用 SQLite FTS4 引擎,它的性能非常好。但是有人知道与 MySQL 的全文搜索(或任何其他 SQL 数据库)的任何基准/比较吗?

PS 我不是在寻找任何 Lucene/NoSQL 替代品。

0 投票
3 回答
3991 浏览

iphone - 以(后缀)结尾并包含在 SQLite FTS 中使用 MATCH 进行的字符串搜索

我在我的 iOS 应用程序中使用 SQLite FTS 扩展。它表现良好,但问题是它只匹配字符串前缀(或以关键字搜索开头)。

IE

这有效:

但以下两个没有:

是否有任何解决方法或任何方式使用 FTS 构建类似于查询的LIKE '%searchterm%'查询。

编辑:

正如 Retterdesdialogs 所指出的,以相反的顺序存储整个文本并对反向字符串运行前缀搜索是解决以/后缀搜索问题结尾的可能解决方案,这是我最初的问题,但它不适用于“包含”搜索。我已经相应地更新了这个问题。

0 投票
1 回答
496 浏览

sqlite - Sqlite3 全文搜索的限制不允许 OR 与 MATCHes。解决方法?

Sqlite3 的全文搜索工具 - FTS3 - 允许使用 MATCH 运算符进行快速全文搜索:

但是,它不支持 SQL 查询中存在 MATCH 的任何地方的 OR 运算符(来源:12):

(不要与 FTS3 查询本身中的 OR 运算符混淆,即SELECT ItemId FROM docs WHERE docs.text MATCH 'linux OR unix'. 这很好用。)

有没有办法重写查询以使其工作(即使它有点慢)?

0 投票
2 回答
465 浏览

sqlite - match 子句返回不正确的结果

我正在尝试在 sqlite 中使用 FTS3 并执行未返回所需结果的查询。这是查询:

此查询返回 col1 也包含我不想要的文本“应变”。我想要这个查询的确切副本:

任何建议/意见/帮助?

0 投票
2 回答
3900 浏览

sqlite - SQLite全文虚拟表正常可用?

即使在阅读了很多关于 SQLite 全文索引的内容之后,出现了一个我在任何地方都没有看到答案的问题:

我已经有一个要使用全文索引搜索的表。我只会创建一个额外的虚拟表USING FTS3,或者USING FTS4然后将INSERT我的数据放入其中。

那么这是否总共使用了双存储?我可以像使用普通表一样使用这样的虚拟表,从而防止两次存储数据吗?

(我在 Android 上使用 SQLite,但这个问题可能适用于任何 SQLite 兼容平台上的使用。)

0 投票
1 回答
900 浏览

android - 如何使用 ORMLite 为 FTS3 创建虚拟表

我找不到将FTS3与 ormlite 一起使用的方法,因为我在创建虚拟表时遇到了问题。我需要在原生 sqlite 中运行这样的东西:

但是 ORMLite 调用下面的方法来创建一个简单的表

TableUtils.createTable(ConnectionSource connectionSource, Class<T> dataClass);

在这个问题的答案中:FTS3 在 ORMLite 中搜索?,写的是使用 ORMLite 的原始查询接口,不幸的是,我找不到用它创建表的方法。

如何将 FTS3 与 ormlite 一起使用?