0

我正在尝试通过使用 和 来实现match数据库against搜索fulltext indexing。因此,当我进行搜索时,它没有按预期工作,没有错误,也没有给出任何结果。我正在使用 Codeigniter 进行查询。

这是我的 PHP 查询代码:

$clean_keyword = trim($keywords); //$keyword is passed to the function`
$this->db->select('question, answer')
         ->from('QA')
         ->where('MATCH(question) AGAINST("'.$clean_keyword.'")', null, FALSE);  
$query = $this->db->get(); //execute the previous statement and save the result in a variable. 

没有给出来自 codeigniter/MySQL 的错误。

我尝试$query通过做来调试变量var_dump($query),看看结果(注意重要的部分是result_arraywithsize=0):

object(CI_DB_mysql_result)[19]
  public 'conn_id' => resource(30, mysql link persistent)
  public 'result_id' => resource(38, mysql result)
  public 'result_array' => 
    array (size=0)
      empty
  public 'result_object' => 
    array (size=0)
      empty
  public 'custom_result_object' => 
    array (size=0)
      empty
  public 'current_row' => int 0
  public 'num_rows' => int 0
  public 'row_data' => null

MySQL 表架构:

CREATE TABLE `QA` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `question` varchar(200) CHARACTER SET utf8 NOT NULL,
  `answer` varchar(500) CHARACTER SET utf8 NOT NULL,
  `u_id` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  FULLTEXT KEY `question` (`question`)
) ENGINE=MyISAM
4

1 回答 1

1

我的代码/数据库架构或任何东西都没有错误,我刚刚意识到FULLTEXT search不显示仅包含 1 个单词的匹配项,例如:
如果我查询这个:
SELECT * FROM QA WHERE MATCH(question) AGAINST('drive');
并且有一个问题与单词driveONLY,我将没有匹配项。
但是,如果我将drive问题列更改为类似how to driveill get a match。

于 2012-06-10T05:27:32.477 回答