问题标签 [fts5]

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 回答
391 浏览

sqlite - 如何获取虚拟表的名称?

示例架构:

选择表名:

结果:

如何仅获取虚拟表的结果,没有*_data, *_idx,和?*_content*_docsize*_config

0 投票
3 回答
2552 浏览

python - 正确安装支持 FTS5 的 sqlite3

我正在开发一个 Python 工具,它使用带有FTS5(全文搜索)的 sqlite3 虚拟表。我想知道如何从压缩包(或任何其他方式)正确安装我的工具工作所需的要求,以便我可以打包它们以实现便携性。

目前,我设法安装了sqlite 的最新版本 tarball。但是,当我执行时:

我得到3.11.0,而sqlite3 --version返回:3.22.0 2018-01-22 18:45:57 0c55d179733b46d8d0ba4d88e01a25e10677046ee3da1d5b1581e86726f2alt1

系统版本 sqlite3 3.22 确实支持 FTS5,正如我所做的那样pragma compile_options;

但是,python 版本,使用这个脚本会返回:

因此,我的问题是

  1. 有没有什么办法可以为我的应用程序制作一个 linux 便携包,在 python 和 linux 系统中都支持 sqlite3 FTS5?
  2. 有没有办法将 python 模块 sqlite3 链接到特定的 sqlite3 路径?

我在 Ubuntu 16.04 LTS 中尝试了所有这些,但我想在 CentOS 7 上也能正常工作。

非常感谢您提前。

有关我所做的 tarball 安装的更多详细信息:

0 投票
0 回答
369 浏览

sqlite - Sqlite FTS5 初始令牌查询语法?

我已经在 sqlite 中设置了带有虚拟表的 FTS5(全文搜索)。MATCH 查询正常工作,但它总是在初始令牌查询中引发语法错误。

例如:SELECT * FROM fts_article WHERE fts_article MATCH '^suo'抛出

我已经尝试了文档中列出的所有语法变体,得到了同样的错误。

(在生产代码中我将使用绑定参数,我也尝试过这种方式。)

更新:一些额外的上下文:我正在使用从 SQLCipher 烘焙到 libsqlcipher-ios.a 中的 sqlite。我正在通过 FMDB 运行我的 sql。我试过直接调用 sqlite api。在这种情况下,错误似乎消失了,但我没有看到我期望的结果。还在调查...

0 投票
1 回答
163 浏览

python - 用python3在sqlite3中进行fts搜索的变量替换

我正在使用 sqlite3 的 fts5 扩展在 python3 中搜索我的 SQLite 数据库。我知道如何将 fts5 与硬编码查询一起使用:

但我不知道如何将变量替换到此搜索中。我已经尝试了?通常可用于将变量替换为 SQLite 的 python 中的 SELECT 语句的语法,但这似乎不起作用。

我需要的是允许我将变量中保存的查询替换为 SELECT 语句的代码,如上面的 fts 搜索。

与其他问题的区别:这个问题不同,因为我使用的是 fts5 扩展而不是LIKE子句;LIKE 子句完全不同。问号语法似乎不适用于 fts ,因为它适用于 LIKE 子句。

0 投票
0 回答
61 浏览

java - SQL 语句在 SQLiteManager 中有效,但在我的程序中无效

我正在尝试从现有表中获取相关值并将它们放入虚拟表中,然后我可以搜索并获取我想要的条目。

除了通过程序将条目实际加载到此虚拟表中之外,我或多或少都在工作。我已经在 sqliteManager 中尽我所能测试了这些语句,它们似乎没有问题,但是当我尝试通过程序执行它们时,没有任何反应,并stmt.execute()返回 false。

有问题的代码:

然后由searchProduct()下面的函数调用:

现在,我知道我的程序至少连接到我的数据库,因为“DELETE FROM VirtualProductTable”语句工作正常(我已经通过手动输入相关表中的项目对其进行了测试)。

我可能认为可能导致此问题的唯一另一件事是我stmt.setString(...)的 s 无法正常工作,但我不知道如何正确测试这些并查看实际采用的值。

我应该说清楚,我没有收到来自 eclipse 的任何实际错误消息,所以我认为我在语法上是合理的。

0 投票
1 回答
821 浏览

c# - C# SQLite FTS5 表和触发器创建

我正在使用 sqlite fts5 创建一个虚拟表,并且出现以下错误消息: SQL Logic error no such module: FTS5. 下面是我的代码: 在 VS 2017 中使用包管理器 我已经下载了 SQLite 和 SQLite FTS5。

0 投票
0 回答
854 浏览

sqlite - 为什么 sqlite fts5 Unicode61 Tokenizer 不支持 CJK(中文日文韩文)?

我原以为Unicode61 Tokenizer可以支持CJK——中文日文韩文 我验证我的 sqlite 支持 fts5

但令我惊讶的是,它根本找不到任何 CJK 词。这是为什么 ?

- - - - - - - 更新 - - - - -

我花了很多时间来构建一个 icu 版本。我在这里分享了我的经验https://stackoverflow.com/a/52866566/301513

据我所知,使用 icu 版本是支持 CJK 的唯一方法,而 fts5 不支持 icu 分词器。

我把我的问题留在这里,以防其他人对这个问题有新的想法。

0 投票
1 回答
811 浏览

python-3.x - 在 sqlite fts5 查询中使用 Match 但需要更多地控制排名?

我有一个使用 fts5 创建的虚拟表:

以下列

一个示例查询是:

结果我得到

  • 文件SOP
  • 里面顶部
  • 在顶部

不过,对于这种特殊情况,我实际上希望“inTOP”出现在“insideTOP”之前,因为标签是完美匹配的。

什么是能够以我想要的方式按摩这些结果的好技术?

非常感谢

马库斯

0 投票
0 回答
50 浏览

sqlite - Sqlite FTS 最小令牌大小

如何告诉 Sqlite FTS5 仅索引超过一定长度的令牌?

'prefix=n'选项很接近,但提供前缀索引。
这些'tokenize'选项似乎没有提供这个。

0 投票
1 回答
73 浏览

sqlite - 有没有办法查看在 sqlite 中将参数应用于查询的结果?

我在 Go 中使用 sqlite3,出于调试目的,我希望看到将参数应用于查询的结果,即使用 ? 替换为实际参数。这可能吗?

目前,我有如下代码,打印的 FTS5 查询看起来不错:

它不会返回错误,但也找不到应该找到的内容,而且我不知道如何进一步调试: