gpt4 book ai didi

python - sqlite fts3/fts4中的信息存储

转载 作者:行者123 更新时间:2023-11-28 18:49:32 25 4
gpt4 key购买 nike

我计划在 python(python3) 中创建一个简单的搜索引擎。通过 sqlite fts3/fts4 的文档,我选择存储文档,因为全文搜索速度很快。我已经有一组网页, 他们的文本被提取并保存在文本文件中。
因此,我计划按以下方式创建 fts4 表:

conn = sqlite3.connect('/home/xyz/exampledb.db')
c = conn.cursor()
c.execute("CREATE VIRTUAL TABLE mypages USING fts4(docid, name, content)")


然后我将遍历文本文件,将其存储在一个字符串中并将该字符串连同名称和 docid(从 1 到 n 的整数,其中 n 是文档总数)插入到 fts 表中
但是 sqlite 文档中的以下语句让我感到困惑,我不确定我上面的代码是否有效:
虚拟表是外部存储或计算引擎的接口(interface),它看起来是一个表,但实际上并不在数据库文件中存储信息。
那么信息将存储在哪里?如果它是一个普通的sqlite表,我会首先创建一个数据库文件并在这个数据库文件中创建表。如果我不得不在另一台机器上使用相同的数据库,我会简单地复制这个文件并将它粘贴到那台机器上。我可能遗漏了文档中的某些内容,但我想在实现之前弄清楚信息将如何存储。

最佳答案

文档中的声明有些误导;虚拟表本身不在数据库中存储数据,但实现虚拟表的引擎可能会选择使用其他表来存储数据。

section 9.1 中解释了 FTS 会发生什么文档:

For each FTS virtual table in a database, three to five real (non-virtual) tables are created to store the underlying data. These real tables are called "shadow tables". The real tables are named "%_content", "%_segdir", "%_segments", "%_stat", and "%_docsize", where "%" is replaced by the name of the FTS virtual table.

关于python - sqlite fts3/fts4中的信息存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15037690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com