问题标签 [fts4]

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 投票
1 回答
649 浏览

ios - SQLite 外部内容 FTS 每次都需要重建?

我在我的应用程序中设置了一个外部内容 FTS4 虚拟表,以允许对现有数据库进行全文搜索。我还设置了类似于文档的触发器,因此当我的主内容表更新时,FTS 表也会获得新条目。

问题是触发器似乎并没有真正更新索引。我从 fts_transactions 表中做了一个简单的 select *,我看到新条目的文本和 rowid 正确,但是在实际搜索时它们并没有出现。为了让他们出现,我必须像这样进行完整的重建:

这是它应该如何工作的吗?我会认为在 FTS 表中插入/更新/删除会修改索引,而不需要我每次都重建它。重建新条目后显示就好了。

如果是这种情况,那么只需将重建命令添加到触发器就可以了吗?我只是担心一旦必须在旧设备上使用几千个条目重建索引,添加新项目会变慢......似乎应该有更好的方法。

0 投票
2 回答
1180 浏览

android - 搜索 Sqlite 全文搜索没有变音符号的阿拉伯语

我有一个带有 FTS4 搜索功能的 sqlite 数据库。它有很多带有变音符号的阿拉伯语文本,这对于查看和可读性很重要,但对于搜索不重要。

我希望搜索与变音符号无关,但它似乎只能在我键入它们时找到完全匹配的匹配项,并忽略所有甚至具有单个变音符号的内容。

我如何防止它这样做。我知道自定义 sqlite 函数在 android 中是不行的,并且标记器非常有限。

0 投票
2 回答
1836 浏览

ios - ios sqlite fts 扩展“没有这样的模块 fts4”错误

我正在尝试根据本教程(CoreData此处设置索引数据库FMDB

我是ios的初学者,所以添加时可能会出错

SQLITE_ENABLE_FTS3 SQLITE_ENABLE_FTS3_PARENTHESIS 宏。

我将它们添加到其他 C 标志。

这是我的代码:

编辑:

DB 错误:1“没有这样的模块:fts4”

我在应用程序委托中的 didFinishLaunchingWithOptions 方法中调用此函数

0 投票
1 回答
536 浏览

java - 如何在 sqlite 中查询一个 fts 表以查找一个匹配的列和另一个不匹配特定查询的列?

我有一个建议表(FTS4),用于为 Android 操作栏搜索中的查询提供建议。我需要在表中查询其中一个 column( suggest_text_1) 与查询文本匹配且另一 column( data_type) 与特定查询不匹配的建议,例如2

我当前的选择文本是table_suggestions MATCH ?,我正在尝试使用以下选择参数文本替换'?'- suggest_text_1:*S1* AND data_type:NOT 2

问题是,即使数据在那里,表格也为我提供了任何建议。可以指出我执行此查询的正确方法吗?

0 投票
1 回答
690 浏览

sqlite - 类似于 LIKE 'a%' 的 FTS 查询?

是否可以利用 SQLite FTS 索引功能来获得类似于 LIKE 'a%' 查询的结果?有 MATCH 'a*' 但不一样,例如:

LIKE 'he%'只会返回第一条记录(这是我需要的)

MATCH 'he*'将返回两个记录

是否可以以某种方式告诉 MATCH 仅比较属性的开头?

0 投票
0 回答
155 浏览

sqlite - 如何在 SQLite 中使用 FTS 创建虚拟表

如何在 SQLite 中使用 FTS 创建虚拟表。

我有 3 个表,但我不想手动将列添加到表中。

例如:我有 3 个表,
例如:t1(t1_id,t1_name), t2(t2_id,t2_name),t3(t3_id,t1_id,t2_id,t3_name)

现在,我想创建一个虚拟表,我只想在其中给出 t3 并且 t1 和 t2 中的列应该自动映射到虚拟表中。

预期的输出应该是:-

我参考了这个这个链接,但我没有找到我的问题的解决方案

0 投票
2 回答
1191 浏览

android - 使用 OR 运算符使用具有多个标记的全文搜索 (FTS) 在多个列中进行搜索

我正在使用 FTS 查询我的数据库以提高搜索速度,因为我还需要在文本描述中进行搜索,

当我尝试使用单列查询时,它的工作正常,如下所示

并且,

因此,以上两个查询都给了我预期的结果,但是当我尝试使用OR运算符组合两个查询时,它没有给我任何结果

OR所以,我想知道在使用运算符搜索多个列时我是否在这里做错了什么

更新

下面的查询工作正常,但这不符合我的要求,

您可以看到,如果我删除了多个令牌,那么它也可以与OR操作员一起正常工作。

0 投票
1 回答
286 浏览

android - "SQLiteException error: No such table" if I change the table's name in the same DB and run again the app

I have created a fts database DATABASE_NAME and a table FTS_VIRTUAL_TABLE.

I can insert and select values.

If I change the name of the table in my code e.g. FTS_VIRTUAL_TABLE_NEW keeping the same database DATABASE_NAME and run the application I get a SQLiteException error: No such table: FTS_VIRTUAL_TABLE_NEW. I wonder, why, since in onCreate method the proper SQL statement exists. Shouldn't the FTS_VIRTUAL_TABLE_NEW have been created?

However if I change not only the name of the table but also the name of the database (i.e. new database) everything works. The app runs normally (of course with no values in the database initially).

I don't understand why I can't only change the name of the table keeping the same database.

0 投票
1 回答
431 浏览

sqlite - 如何在全文搜索中匹配三个值/关键字?

我正在使用类似于以下查询的查询:

如果我只使用两个“或”运算符,查询将按预期返回,但当我尝试使用三个或更多“或”运算符时,我没有得到任何结果。您将如何使用查询语句来检查三个或更多值中的任何一个?

这是使用 Sqlite FTS4 标准全文查询语法,我认为它不支持使用括号更改操作顺序。

我的描述包含任意精度级别的小数值,我们的用户不一定会以与描述中存储的相同的精度级别进行搜索(例如,用户可能想要搜索 1.010,但描述实际上是 1.01或 1.0100,用户不会提前知道)。

0 投票
1 回答
285 浏览

sql - 无法在 sqlite FTS 表中创建 noindexed 列

我正在尝试使用sqlite 3.8.2创建下表

但由于某种原因,该命令失败并出现以下错误:

你知道出了什么问题吗?

注意:根据这个答案notindexed支持 3.8 及更高版本。