我正在尝试使用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)
变量,查看结果( NB重要部分是result_array
size=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
答案 0 :(得分:1)
我的代码/数据库架构或其他任何内容都没有错误,我只是意识到FULLTEXT search
没有显示仅包含1个字的匹配项,例如:
如果我问这个:
SELECT * FROM QA WHERE MATCH(question) AGAINST('drive');
并且只有drive
这个词有一个问题,生病没有匹配
但如果我改变了drive
问题专栏,那就像how to drive
那样得到匹配。