使用PDO进行PHP全文搜索

时间:2011-12-10 06:48:21

标签: php mysql full-text-search

我已经开始使用php pdo进行MySQL全文搜索了。我设置了全文索引,如下所示:

CREATE FULLTEXT INDEX ft_title ON booklist (title); 

我也尝试过:

ALTER TABLE booklist ADD FULLTEXT ft_title (title);

两者似乎都正确设定了指数。

然后我按如下方式查询数据库:

$stmt = $this->pdo1->prepare("SELECT * FROM booklist WHERE MATCH(title) AGAINST(:value)");

    try {
        $stmt->execute(array(':value' => $val));
    } catch (Exception $e) {
        return false;
    }

    $code = $stmt->fetchAll(PDO::FETCH_ASSOC);

无论给$ val赋值,结果数组始终为空。没有给出错误消息。 (显然)数据库中确实存在许多匹配的条目。

我迷路了,不胜感激。

“SHOW VARIABLES LIKE'%ft%'”的结果:

ft_boolean_syntax   + -><()~*:""&|
ft_max_word_len     84
ft_min_word_len     4
ft_query_expansion_limit    20
ft_stopword_file    (built-in)

1 个答案:

答案 0 :(得分:3)

您的桌子中有多少条符合搜索条件的记录?

默认情况下,如果匹配项出现在超过50%的记录中,则mysql全文搜索不会返回任何结果。

这意味着如果您的表中只有一条记录,或者只有2条记录,那么无论您搜索什么记录,您都将无法获得任何结果。

要简短说明,您的表格中至少需要3条记录,其中只有一条记录必须符合您的搜索条件才能获得任何结果。

当您刚开发项目并且表中只有1行或2行时,这是一种常见情况,然后尝试完整的测试搜索不会返回任何内容。

相关问题