问题标签 [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.
ios - SQLite 外部内容 FTS 每次都需要重建?
我在我的应用程序中设置了一个外部内容 FTS4 虚拟表,以允许对现有数据库进行全文搜索。我还设置了类似于文档的触发器,因此当我的主内容表更新时,FTS 表也会获得新条目。
问题是触发器似乎并没有真正更新索引。我从 fts_transactions 表中做了一个简单的 select *,我看到新条目的文本和 rowid 正确,但是在实际搜索时它们并没有出现。为了让他们出现,我必须像这样进行完整的重建:
这是它应该如何工作的吗?我会认为在 FTS 表中插入/更新/删除会修改索引,而不需要我每次都重建它。重建新条目后显示就好了。
如果是这种情况,那么只需将重建命令添加到触发器就可以了吗?我只是担心一旦必须在旧设备上使用几千个条目重建索引,添加新项目会变慢......似乎应该有更好的方法。
android - 搜索 Sqlite 全文搜索没有变音符号的阿拉伯语
我有一个带有 FTS4 搜索功能的 sqlite 数据库。它有很多带有变音符号的阿拉伯语文本,这对于查看和可读性很重要,但对于搜索不重要。
我希望搜索与变音符号无关,但它似乎只能在我键入它们时找到完全匹配的匹配项,并忽略所有甚至具有单个变音符号的内容。
我如何防止它这样做。我知道自定义 sqlite 函数在 android 中是不行的,并且标记器非常有限。
ios - ios sqlite fts 扩展“没有这样的模块 fts4”错误
我正在尝试根据本教程(CoreData
此处)设置索引数据库FMDB
我是ios的初学者,所以添加时可能会出错
SQLITE_ENABLE_FTS3 SQLITE_ENABLE_FTS3_PARENTHESIS 宏。
我将它们添加到其他 C 标志。
这是我的代码:
编辑:
DB 错误:1“没有这样的模块:fts4”
我在应用程序委托中的 didFinishLaunchingWithOptions 方法中调用此函数
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
。
问题是,即使数据在那里,表格也为我提供了任何建议。可以指出我执行此查询的正确方法吗?
sqlite - 类似于 LIKE 'a%' 的 FTS 查询?
是否可以利用 SQLite FTS 索引功能来获得类似于 LIKE 'a%' 查询的结果?有 MATCH 'a*' 但不一样,例如:
LIKE 'he%'
只会返回第一条记录(这是我需要的)
MATCH 'he*'
将返回两个记录
是否可以以某种方式告诉 MATCH 仅比较属性的开头?
android - 使用 OR 运算符使用具有多个标记的全文搜索 (FTS) 在多个列中进行搜索
我正在使用 FTS 查询我的数据库以提高搜索速度,因为我还需要在文本描述中进行搜索,
当我尝试使用单列查询时,它的工作正常,如下所示
并且,
因此,以上两个查询都给了我预期的结果,但是当我尝试使用OR
运算符组合两个查询时,它没有给我任何结果
OR
所以,我想知道在使用运算符搜索多个列时我是否在这里做错了什么
更新
下面的查询工作正常,但这不符合我的要求,
您可以看到,如果我删除了多个令牌,那么它也可以与OR
操作员一起正常工作。
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.
sqlite - 如何在全文搜索中匹配三个值/关键字?
我正在使用类似于以下查询的查询:
如果我只使用两个“或”运算符,查询将按预期返回,但当我尝试使用三个或更多“或”运算符时,我没有得到任何结果。您将如何使用查询语句来检查三个或更多值中的任何一个?
这是使用 Sqlite FTS4 标准全文查询语法,我认为它不支持使用括号更改操作顺序。
我的描述包含任意精度级别的小数值,我们的用户不一定会以与描述中存储的相同的精度级别进行搜索(例如,用户可能想要搜索 1.010,但描述实际上是 1.01或 1.0100,用户不会提前知道)。