0

尝试使用 MySQL 的 MATCH AGAINST 全文搜索,其中我的搜索词由 jQueryUIs 自动完成小部件提供为$_GET['term']. 此外,我希望使用 PHP 的 PDO 来逃避这个术语。最后,我想使用通配符,但是,如果在提供的术语中的每个单词上使用通配符太多,我可以将其应用于术语中的最后一个单词。我的尝试如下,适用的表模式如下。问题是当术语中仅提供部分单词时,它不会返回任何记录。有什么建议么?谢谢

public function searchHelp()
{
    header('Content-Type: application/json');
    $this->dontCache();
    try
    {
        $sql ='SELECT id,name AS value FROM topics WHERE MATCH(keywords,name,content) AGAINST(? IN NATURAL LANGUAGE MODE)';
        $stmt = dbHelp::db()->prepare($sql);
        $stmt->execute(array($_GET['term'].'*'));
        echo(json_encode($stmt->fetchAll(PDO::FETCH_ASSOC)));
    }
    catch(PDOException $e){library::sql_error($e,$sql);}   
}

CREATE TABLE `topics` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `topics_id` int(11) NOT NULL,
  `name` varchar(45) NOT NULL,
  `content` text,
  `list_order` tinyint(4) NOT NULL DEFAULT '0',
  `keywords` text,
  `display_list` tinyint(4) DEFAULT '1',
  PRIMARY KEY (`id`),
  KEY `fk_topics_topics` (`topics_id`),
  FULLTEXT KEY `name` (`keywords`,`name`,`content`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
4

0 回答 0