SQLite3 FTS3/FTS4 匹配信息示例

标签 sqlite fts3

我正在使用 SQLite3 的 FTS4 模块,并且在 matchinfo() 辅助函数的示例中遇到问题。

目前我只是尝试运行 http://www.sqlite.org/fts3.html#matchinfo 中的 matchinfo() 示例但它不起作用。

我在Windows 7上使用SQLite 3.5.9(预编译版本)、在Ubuntu Linux OS 10.04.4上使用SQLite 3.6.22以及在Mac OS 10.6.8上使用SQLite 3.7.10(都是手动编译版本)进行了尝试。 在所有情况下,FTS4 模块均已启用,并且文档中的所有内容都可以正常工作(偏移量和片段功能、全文搜索查询等)。 在 Ubuntu 和 Mac OS 上,使用 matchinfo() 示例时我没有得到任何结果。在 Windows 上,命令行显示了奇怪的字符。 我通过以下方式进行了尝试:使用 PHP 脚本、使用 NaviCat for SQLite3 以及在命令行本身上。在每种情况下都是相同的。

这是我用于示例的 PHP 代码:

<?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 在处理 BLOB 时存在问题?

希望大家能帮帮我。谢谢!

最佳答案

要将值视为终端输出,请使用:

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

这显示了类似的值

X'0200000002000000020000000300000002000000000000000100000001000000010000000200000002000000010000000100000001000000'
X'0200000002000000010000000300000002000000000000000100000001000000010000000200000002000000000000000100000001000000'

还有...
This php function帮助我更好地理解 SQLite3 文档中列出的 C 函数,您可以看到如何将 blob 转换为字符串,而不是 int 数组。

关于SQLite3 FTS3/FTS4 匹配信息示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9416136/

相关文章:

node.js - windows平台下如何用nodejs制作加密的sqlite3数据库

python - 更改表时出现 UnicodeDecodeError

Android 跟踪文件描述符在生产环境中泄漏

android - Android 上的 SQLite 增强查询语法

android sqlite fts 不区分大小写

sqlite - 我如何指示 SQLAlchemy 在 create_all() 上创建 SQLite FTS3 表?

java - 从服务类向 Sqlite 添加数据时 Recyclerview 不更新?

ruby-on-rails-3 - Rails 不创建中间表? - Habtm 关系