匹配不获取多列



我有一个非常简单的全文搜索,带有准备好的语句。我的所有列都正确索引为全文。

如果我尝试匹配一列,搜索和获取可以正常工作,但是,当我一次使用 2 列时,尽管它们是预期的,但我无法获取结果。1)我相信我的错误出在我的代码的获取部分,但我不明白为什么如果多列MATCH适用于1列,那会是一个问题。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帮忙。

已解决:问题出在索引上。

具体来说,我的列被一个接一个地索引,添加全文(column_name)。

但是,要使其正常工作,必须使用在table_name(columns_names)上创建全文索引IDX;

见 https://dev.mysql.com/doc/refman/5.6/en/innodb-fulltext-index.html

此外,使用 MySQLWorkbench 测试您的查询并获取有关 PHP 查询可能无法打印的错误的信息。

相关内容

  • 没有找到相关文章

最新更新