我有一个结构如下的 MySQL 表:
$sql = "CREATE TABLE test(
id INT NOT NULL,
title VARCHAR(512) NOT NULL COLLATE utf8_general_ci,
body TEXT NOT NULL COLLATE utf8_general_ci,
dateStored VARCHAR(32) NOT NULL COLLATE utf8_general_ci,
fileName VARCHAR(128) NOT NULL COLLATE utf8_general_ci,
FOREIGN KEY(id) REFERENCES `database`.`parent`(id)
);";
我的存储引擎是 MYISAM。
现在,当我想使用 MATCH
- AGAINST
在 body
字段中搜索时/strong>,没有结果……
这是我的尝试:
$sql2 = "SELECT * FROM database.test
WHERE MATCH(body) AGAINST('?')";
$prepare = $pdo->prepare($sql2);
$prepare->execute( array( $pattern ) );
$fetch = $prepare->fetchAll();
这看起来很基础,但我的代码仍然不起作用。你能告诉我我的代码有什么问题吗?
这是因为我有一个字段引用了另一个表吗?
最佳答案
添加更多数据。默认情况下,MySQL 将忽略表中 50% 或更多行中的任何单词,因为它认为这将是一个“噪音”单词。
如果表格中的行很少,通常会经常达到这个 50% 的限制(即,如果您有两行,每个单词至少出现在 50% 的行中!)。
关于php - MySQL 全文搜索不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23811196/