2012-02-23 4 views
3

SQLite3のFTS4モジュールを使用していて、matchinfo()補助関数の例に問題があります。SQLite3 FTS3/FTS4 matchinfoの例

現時点では、私はhttp://www.sqlite.org/fts3.html#matchinfoからmatchinfo()の例を実行しようとしていて、動作しません。

私はSQLiteの3.5.9(プリコンパイルされたバージョン)とWindows 7で、SQLiteの3.6.22とUbuntu LinuxのOS 10.04.4上とSQLiteの3.7.10(両方とも手動でコンパイルされたバージョン)を搭載したMac OS 10.6.8上でそれを試してみました。 すべての場合、FTS4モジュールが有効になっており、ドキュメントのすべてが機能します(オフセットとスニペット機能、全文検索クエリなど)。 UbuntuとMac OSではmatchinfo()の例を使用しても結果が得られません。 Windowsでは、コマンドラインは私に奇妙な文字を与えます。 私は以下の方法でそれを試しました:PHPスクリプトを使用し、NaviteCatをSQLite3とコマンドラインで使用する。どんな場合でも同じです。私はウェブ上でこの問題について何かを見つけtdidn't

<?php 

$db = new SQLite3("matchtest.db", SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE); 
$db->exec("CREATE VIRTUAL TABLE t1 USING fts4(a, b)"); 
$db->exec("INSERT INTO t1 VALUES('transaction default models default', 'Non transaction reads')"); 
$db->exec("INSERT INTO t1 VALUES('the default transaction', 'these semantics present')"); 
$db->exec("INSERT INTO t1 VALUES('single request', 'default data')"); 


//$result = $db->escapeString("'default transaction \"these semantics\"'"); 
$result = $db->query("SELECT matchinfo(t1) FROM t1 WHERE t1 MATCH 'default transaction \"these semantics\"'"); 

while($row = $result->fetchArray()){ 
    var_dump($row); 
} 
?> 

この

は、私は、たとえば使用していますPHPコードです。その結果、私はそれをどのように修正するかの手がかりがありません。 PHPはBLOBを扱う際に問題がある可能性がありますか?

私はあなたが私を助けることを願っています。ありがとうございました!

答えて

1

のように使用し、ターミナル出力として値を表示するには:

X'0200000002000000020000000300000002000000000000000100000001000000010000000200000002000000010000000100000001000000' 
X'0200000002000000010000000300000002000000000000000100000001000000010000000200000002000000000000000100000001000000' 

がまた...
This php functionは私がSQLite3のドキュメントAに記載されているC関数を理解する助けたようにこれは値を示し

select quote(matchinfo(t1)) from t1 where t1 match "default transaction"; 

これよりint型の配列ではなく、BLOBがどのように文字列にキャストされているかを見ることができます。