【问题标题】:Fulltext search, no results?全文搜索,没有结果?
【发布时间】:2012-06-13 09:57:20
【问题描述】:

我正在尝试使用matchagainstfulltext 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 的错误。

我尝试通过执行var_dump($query) 来调试$query 变量,查看结果(注意,重要的部分是result_arraysize=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

【问题讨论】:

  • $clean_keyword 中有什么?或者可能与结果不匹配
  • @MoyedAnsari 已更新,感谢您将我指向 $clean_keyword 值。

标签: php mysql algorithm codeigniter search


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2018-08-30
    • 1970-01-01
    • 2010-10-28
    • 2013-12-06
    • 1970-01-01
    • 2017-04-02
    • 2018-03-11
    • 1970-01-01
    相关资源
    最近更新 更多