1

我有一张名为“app_curso”的表

就像这样:

桌子

CREATE TABLE `app_curso` (
  `cur_id` int(11) NOT NULL AUTO_INCREMENT,
  `cur_nombre` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`cur_id`),
  FULLTEXT KEY `cur_nombre` (`cur_nombre`),
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

我想在“cur_nombre”字段中进行全文搜索。我正在尝试使用这部分代码。

服务

      $query = $_GET['q'];
      $page = $_GET['page'];

      // This is the object where I get all DB references
      global $db;

      $sql    = new Zend\Db\Sql\Sql($db);
      $select = $sql->select();
      $select->from('app_curso');

      // Here is where I want to make the search but it doesn't work
      $select->columns(array(new \Zend\Db\Sql\Expression(
                             "MATCH(column) AGAINST('Query') AS curso")))
             ->where("MATCH(cur_nombre) AGAINST(".$query." in boolean mode)");


      $selectString = $sql->getSqlStringForSqlObject($select);
      $result       = $db->query($selectString, $db::QUERY_MODE_EXECUTE);

      $rowset = new Zend\Db\ResultSet\ResultSet();
      $rowset->initialize($result);

      $rows = $rowset->toArray();

如何使用 zf2 进行全文搜索?

我认为这是进行全文搜索的正确方法;但是,我认为我错过了一些东西。

老实说,我是 zend 框架 2 的新手。但我正在尽我所能来解决这个问题。我希望有人知道如何进行这样的搜索。

提前致谢。

4

1 回答 1

-3

首先,全文索引仅适用于 MySQL 5.6.4 及更高版本中的 InnoDB 引擎,因此,除非您在使用多于几行的内容时想要削弱性能,否则您需要确保使用的是 MySQL 5.6.4或以上。

话虽如此,我仍然建议不要使用 MySQL 进行全文搜索。我建议您考虑使用专为执行全文搜索而设计的搜索服务器。像 Elasticsearch、Apache Solr 或 Sphinx 之类的东西。

于 2013-11-24T14:09:20.380 回答