1

現在のデータベースで 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に空の仮想テーブルを作成しようとすると、正常に動作するため、データベースが欠落しているとは思いません。ありがとう。

4

1 に答える 1

0

FTS クエリは SQL Manager で問題なく動作します。

CREATE VIRTUAL TABLE t USING FTS4(x);
INSERT INTO t VALUES('blah');
INSERT INTO t VALUES('blubb');
SELECT * FROM t WHERE x MATCH 'bl*';

「認識されないパラメータ: content=」というエラー メッセージは、コンテンツのない/外部コンテンツ テーブルをサポートしていない SQLite バージョン、つまり 3.7.11 よりも古いバージョンの典型的なものです。

于 2013-02-12T11:24:40.253 に答える