2

FTS を既存のデータベースに追加する必要があります。

FTS インデックスがデフォルト (メイン) DB に存在する外部コンテンツ FTS テーブルのテストを開始しました。いくつかのこと (インデックスの再構築など) にかなりの時間がかかる可能性があることを除いて、すべてが満足に機能しました。

次に、接続された DB に FTS インデックスを配置する可能性について読みました。これはいくつかの利点を約束するように思われたので、試してみることにしました。しかし、私の試みはすべて失敗しました。以下にいくつかの例を示します。

状況

  • テキスト列「コード」を持つテーブル「アカウント」があり、

  • その列の FTS インデックスを作成し、別のデータベース ファイルに配置したい

Test1) ERROR: near ".": 構文エラー

ATTACH 'ZipFts.sdf' AS ZipFts; CREATE VIRTUAL TABLE ZipFts.account USING fts4(content=account, code);
INSERT INTO ZipFts.account(ZipFts.account) VALUES('rebuild');

テスト 2) エラー: スタック オーバーフロー (sqlite エンジン内の無限再帰)

ATTACH 'ZipFts.sdf' AS ZipFts; CREATE VIRTUAL TABLE ZipFts.account USING fts4(content=account, code);
INSERT INTO ZipFts.account(account) VALUES('rebuild');

Test3) エラー: そのようなテーブルはありません: ZipFts.account

ATTACH 'ZipFts.sdf' AS ZipFts; CREATE VIRTUAL TABLE ZipFts.ZipFts_account USING fts4(content="account", code);
INSERT INTO ZipFts_account(ZipFts_account) VALUES('rebuild');

Test4) エラー: そのようなテーブルはありません: ZipFts.main.account

ATTACH 'ZipFts.sdf' AS ZipFts; CREATE VIRTUAL TABLE ZipFts.ZipFts_account USING fts4(content="main.account", code);
INSERT INTO ZipFts_account(ZipFts_account) VALUES('rebuild');

これらがどのように機能するか知っている人はいますか?前もって感謝します。

4

2 に答える 2

0

これは設計通りだと思います。

そうしないと、データベースが接続または切断されると、外部コンテンツ テーブルの基になるテーブルが変更される可能性があります。

ただし、コンテンツのない FTS テーブルを使用してこれを実現できる場合があります。

ダン・ケネディ。

于 2013-04-24T14:12:58.413 に答える