我已经开始使用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