php pdo 实现搜索功能,使用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行,然后尝试进行完整的测试搜索不会返回任何内容时,这是一种常见情况.

标签:full-text-search,mysql,php

来源: https://codeday.me/bug/20191202/2085013.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值