現在のデータベースで FTS を使用できるようにしようとしています。FTS3 と FTS4 のサポートをオンにしてプロジェクトを再コンパイルしました。sqliteページからいくつかの例を試してみたので、この部分が機能することはわかっています。
例えば
CREATE TABLE t2(id INTEGER PRIMARY KEY, a, b, c);
CREATE VIRTUAL TABLE t3 USING fts4(content="t2", a, c);
私がやりたいことは、アプリのドキュメント ディレクトリに既に保存されている .db に仮想テーブルを追加することです。書き込み可能です。
私の質問はマルチパートです。まず、Firefox のアドオン SQLite マネージャーでクエリを実行してみました。私のクエリはこれです:
CREATE VIRTUAL TABLE VirtualTestTable USING fts4(content=Chromosomes, ID Integer Primary Key Autoincrement, rsID, ChrID, Position, Strand, GeneSymbol)
これを sqlite マネージャーで実行すると、いくつかの異なるテーブル (VirtualTestTable、VirtualTestTable_docsize、VirtualTestTable_segdir、VirtualTestTable_segments、VirtualTestTable_stat) が作成されます。
したがって、sqlite マネージャーは FTS4 をサポートしていると思います。私のテーブルには、元の染色体テーブルのデータも取り込まれています。しかし、テーブル内の何かを照合しようとすると、常に結果がゼロになります。私の最初の質問は、sqlite マネージャーは FTS クエリをサポートしていますか?
私にとってより重要な私の他の質問は、私のクエリがsqliteマネージャーで機能するかどうかです.Xcodeプロジェクトでこのクエリをさまざまなバリエーションで試します.
content='Chromosomes'
content=\"Chromosomes\"
content=Chromosomes
クエリで常にエラーが発生します。私は FMDB を使用しており、executeUpdate: メッセージを使用しています。私のエラーは次のとおりです。
Error calling sqlite3_step (1: SQL logic error or missing database) SQLITE_ERROR
Unknown error finalizing or resetting statement (1: unrecognized parameter: content=Chromosomes)
このエラーが発生する理由を知っている人はいますか? fmdatabaseに空の仮想テーブルを作成しようとすると、正常に動作するため、データベースが欠落しているとは思いません。ありがとう。