微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用PDO进行PHP全文搜索

我已经开始使用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提供哪个值,结果数组始终保持为空.没有给出错误信息.同样(显然)数据库中确实存在许多匹配的条目.

我迷路了,不胜感激.

显示变量如’%ft%’”的结果:

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

解决方法:

您的表中有多少条记录与您的搜索相匹配?

认情况下,如果匹配项出现在记录的50%以上,则MysqL全文本搜索将不返回任何结果.

这意味着如果表中只有一条记录,或者只有2条记录,那么无论您搜索什么,都将永远不会得到结果.

为了简短起见,您的表中至少需要3条记录,并且其中只有一条记录必须与您的搜索条件相匹配才能返回任何结果.

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐