我有一个非常简单的 FULLTEXT 搜索,其中包含准备好的语句。我的所有列都正确索引为 FULLTEXT。
如果我尝试 MATCH 一列,则搜索和获取工作正常,但是,当我一次使用 2 列时,我无法获取结果,尽管它们是预期的。1)我相信我的错误出现在我的代码的 fetch 部分,但我不明白为什么如果它与 1 列一起使用,这将是多列 MATCH 的问题。2) 我知道如果超过 50% 的表记录与搜索匹配,则全文搜索不会返回结果。那你怎么处理这样的案子呢?
$newParameter='%'.$sanitized.'%';
$query = "SELECT DISTINCT name, description FROM recipes
WHERE MATCH (name, description) AGAINST (?)";
if($stmt = $this->mysqli->prepare($query))
{
$stmt->bind_param('s', $newParameter);
$stmt->execute();
/* bind results to prepared statement */
$stmt->store_result();
$stmt->bind_result($name, $description);
/* fetch values */
while ($stmt->fetch()) {
/*
* ERROR HERE:
* NOT ENTERING HERE WITH MULTICIOLUM MATCHING.
*/
echo $name . ", " . $description . "<br>";
}
} else {
echo "Empty query";
}
注意:如果我单独匹配(名称)或匹配(描述),此代码将返回应有的内容。TY 的帮助。