问题标签 [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 回答
137 浏览

sql - 带有 FTS4 表的 sqlite3:查询返回错误的行

我在 SQLite3 中的 FTS4 索引有一个奇怪的问题,即MATCH对一个术语的查询返回的不是完全匹配,而是另一个相似的匹配,反之亦然。

这是一个更好地说明它的例子:

它似乎与破折号有关,这是一个类似的案例,表现出相同的行为:

这是这个测试数据库的构建方式,以防有人想尝试复制它:

0 投票
1 回答
322 浏览

sqlite - 如何增加 Sqlite FTS4 片段大小

您好我正在使用 sqlite 对许多文档进行全文搜索。虽然我已经让它基本上工作了,但我非常想增加/扩展片段中返回的文本量,有没有办法增加片段()返回的文本的大小和数量。我使用 FTS4 创建了我的 fts 表,我在 Windows 7 上运行 python 2.7

0 投票
1 回答
115 浏览

android - Sqlite fts4 搜索 html 编码字符

我正在编写一个字典项目。它可以将英语翻译成阿拉伯语或将阿拉伯语翻译成英语。单词存储在 sqlite fts4 数据库中。数据库中存储的 html 中的阿拉伯字母编码如下

当我使用英语到阿拉伯语的 fts4 查询语法时,例如 => stor

返回的结果对我有好处

但是当我在阿拉伯语到英语中搜索 => غير

返回结果

但我想看到结果只从我搜索的 html 编码文本开始,比如

如您所见,我在单词的开头使用“^”来获得此结果。英语到阿拉伯语工作正常,但阿拉伯语到英语不能正常工作。

0 投票
2 回答
1209 浏览

android - 针对亚洲文本的 Android SQLite 全文搜索的变通方法

我读过很多帖子询问是否可以在 Android 中完成基于 SQLite 的全文搜索,所有答案都指出 Android 的内置 SQLite 不允许自定义标记器。默认分词器考虑用空格或其他符号分隔的单词,但亚洲词(如中文)需要其特殊的分词器,但 Android 不允许添加自定义分词器。

我读的帖子是几年前的。最近的 Android 版本有更新吗?我只是搜索并没有找到答案。

我正在考虑一种解决方法。在我将元组插入到 FTS3/FTS4 虚拟表中进行索引之前,是否可以人为地在每个单词之间添加空格,以便默认的分词器可以将每个亚洲“单词”视为英语单词?在进行查询时,查询字符串也是如此,即添加了人工空格。

我在Linux中尝试过,看起来它可以工作。例如,如果我这样做,则亚洲文本的全文搜索是可以的:

但一个疑问是,它是否会为数据库文件花费更多的存储空间,因为空格中有双倍的字符。看起来所谓的“虚拟表”不仅存储了生成的索引,还存储了原始文本。

0 投票
1 回答
58 浏览

sql - 对 SQLite 表和虚拟表的困惑

我目前正在为 Android 环境开发一个笔记本应用程序,但是我被困在如何处理 SQL 搜索界面上。通过研究,我发现最有效的方法是使用“全文搜索”模块(FTS4)。

我坚持的是我必须处理这个问题的方式。我一定要吗:

  1. 创建一个 Note Table 和一个 Virtual Table 并使用一个简单的 Trigger 逻辑插入到这两个表中。

或者

  1. 我是否只创建一个虚拟表并在其中维护注释列表。
0 投票
0 回答
1049 浏览

database - 在 Sqlite 中创建动态 FTS4 表

我一直致力于通过使用视图使我的 sqlite DB 更具动态性。除了全文搜索表之外,这在所有情况下都有帮助。根据 SQLite FTS4 文档 ( https://www.sqlite.org/fts3.html#section_6_2_2 ),在创建全文搜索虚拟表时,有一种方法可以引用表作为内容表。不幸的是,用户仍然负责填充和维护虚拟表,这没有多大意义,但它就是这样。

我最初填充 fts4 表并让它工作的方式是这样的:

创建虚拟表 term_search 使用 fts4(id,name,origin,content,refs, created);

INSERT INTO term_search SELECT id,name,origin,text,refs,created FROM full_text_dict;

这最初运作良好,但不是动态的。

我试图像这样创建“外部内容”fts4 表:

使用 fts4 创建虚拟表 term_search (content="full_text_dict",name, origin,content,refs,created);

INSERT INTO term_search (docid,name,origin,content,refs,created) SELECT id,name,origin,text,refs,created FROM full_text_dict;

SQLite 允许我这样做,但是当我尝试像这样查询表时,我得到:

SELECT * FROM term_search WHERE 内容匹配“数据”;

错误:SQL 逻辑错误或缺少数据库

当我尝试运行完整性检查命令时,我得到了同样的错误:

插入到 term_search(term_search) VALUES('integrity-check');

我觉得我遗漏了一些东西,但无法从文档中确定它是什么。有任何想法吗?提前致谢。

编辑:我应该提到我正在使用的内容表是一个视图。据说它应该仍然可以工作,但我想知道它是否可能是一个错误。

0 投票
1 回答
241 浏览

sqlite - SQLite、文本搜索 FTS 等

我正在使用 SQLite3 对一些旧的 D5 业务(朋友免费赠品)进行一些更新和修复,所以必须使用 Zeos 6.6

我想加快当前使用两个 BLOB_TEXT 字段“类”和“方法”的文本搜索

谁能指出一些使用 SQLite FTS 扩展的代码或比上面更快的代码?

我发现了这一点,但由于太多原因无法在此处定义。我确信它可以正常工作,因为 Žarko Gajić 的东西总是在现场,但只是不工作这个安装。:) http://zarko-gajic.iz.hr/full-text-txt- ... g-project/

只需在此处找到此链接... SQLite 中的 BLOB 数据类型是否支持全文搜索?

这可以解释为什么似乎没有任何效果,BLOB_TEXT 被忽略了?是的?不?

有什么片段可以加快这个文本搜索的速度吗?

0 投票
0 回答
131 浏览

ios - 如何将 SQLite3 创建的函数添加到 iOS 9 项目?

我正在尝试为带有 Swift 2.2 的 iOS 9/Xcode 7 项目构建一个简单的 SQLite 全文搜索 (FTS4)。我正在使用 Swift 直接访问 SQLite3 C API,我认为不需要使用臃肿的包装库。我的全文搜索工作完美。现在我需要为结果创建一个排名函数。我已经有了排名功能的 C 代码,问题是我不知道如何:

  1. 将排名功能代码的C源或编译后的可执行文件获取到编译好的iOS工程中。
  2. 在 SQLite 中创建或加载排名函数 (sqlite3_create_function)
  3. 让 SQLite 识别创建的函数

所以基本上,我有排名函数的 C 源代码,并且每次尝试让 SQLite 识别该函数都失败了。

谢谢你的帮助。

0 投票
1 回答
284 浏览

android - 如何在android上查询fts表

我正在为安卓开发。我正在使用参考http://sqlite.org/fts3.html。我创建了一个 fts 表作为

COLUMN_DOG_ID 实际上是文本。它是一个字符串,而不是一个数字。在任何情况下,我都会创建表,然后向其中添加数据;似乎没有任何麻烦。但是当我尝试查询时,我总是遇到死胡同:我得到了异常。这是查询

错误

0 投票
1 回答
331 浏览

sqlite - SQLite:在启用 FTS4 的表中使用比较运算符进行查询

SQLite 版本:3.12.2

使用这个表达式,我创建了一个表来使用快速文本查询的可能性:

注1:为栏目WordsNo字数;Sentence

然后,我用我的数据(约 500,000 行)填充了我的表,据我所知,因为我使用了FTS4,所以我只能使用match函数来检查列的内容(如果我错了,请纠正我)。

我想要做的是用两个条件查询数据:

  1. WordsNocolumn的值等于或大于例如 10的所有行;
  2. 列的值Sentence具有例如“book”的所有行。

我尝试使用的是:

但正如我之前所说,比较运算符不起作用。

实现这一目标的正确方法是什么?