したがって、FTS [34]テーブルdata
と通常のテーブルがあり、これらは。info
でバインドされているとしinfo.ID = data.rowid
ます。master
この結合を表すビューがあり、全体的な情報をクエリするために使用します。CREATE TABLE
ステートメントは次のとおりです。
CREATE VIRTUAL TABLE data USING fts4(
Name,
Keywords,
Aliases
Description);
CREATE TABLE info (
ID INTEGER PRIMARY KEY,
-- A bunch of other columns...
);
CREATE VIEW master AS SELECT
info.ID AS ID
data.Name AS Name,
data.Keywords AS Keywords,
data.Aliases AS Aliases,
data.Description AS Description,
-- A bunch of other columns...
FROM info JOIN data ON info.ID = data.rowid;
次に、テーブルからセル全体を選択する代わりに、テーブルの各列で実行されるdata
SQLiteスニペットdata
関数の結果を選択する別のビューを作成します。
CREATE VIEW search AS SELECT
master.*,
snippet(data '<b>', '</b>', '...', 0) AS sn_Name,
snippet(data '<b>', '</b>', '...', 1) AS sn_Keywords,
snippet(data '<b>', '</b>', '...', 2) AS sn_Aliases,
snippet(data '<b>', '</b>', '...', 3) AS sn_Description
FROM master JOIN data ON master.ID = data.rowid;
ただし、Python内からそのステートメントを実行すると、次のようになります。
sqlite3.OperationalError: near "'<b>'": syntax error