簡體   English   中英

信息存儲在sqlite fts3 / fts4中

[英]information storage in sqlite fts3/fts4

我計划在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一起插入fts表(從1到n的整數,其中n是總文檔)
但是sqlite文檔中的以下語句使我感到困惑,並且我不確定上面的代碼是否有效:
虛擬表是外部存儲或計算引擎的接口,它似乎是一個表,但實際上並不將信息存儲在數據庫文件中。
那么信息將存儲在哪里?如果它是一個普通的sqlite表,我首先要創建一個數據庫文件並在這個數據庫文件中創建表。如果我不得不在另一台機器上使用相同的數據庫,我只需復制這個文件,將它粘貼在那台機器上。我可能在文檔中遺漏了一些內容,但我希望在實現之前明確信息的存儲方式。

文件中的陳述有些誤導; 虛擬表本身不會在數據庫中存儲數據,但實現虛擬表的引擎可能會選擇使用其他表來存儲數據。

FTS的內容在文檔的第9.1節中解釋:

對於數據庫中的每個FTS虛擬表,將創建三到五個真實(非虛擬)表來存儲基礎數據。 這些真實表稱為“影子表”。 真實表名為“%_content”,“%_ segdir”,“%_segments”,“%_ stat”和“%_docsize”,其中“%”由FTS虛擬表的名稱替換。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM