簡體   English   中英

使用zend Framework 2進行全文搜索

[英]Make a full-text search with zend framework 2

我有一個名為“ 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 Framework 2的新手。但是我正在盡力做到這一點。 我希望有人知道如何進行這樣的搜索。

提前致謝。

首先,全文索引僅適用於MySQL 5.6.4及更高版本中的InnoDB引擎,因此除非您希望在使用除少數幾行以外的任何內容時降低性能,否則需要確保使用MySQL 5.6.4。或以上。

話雖如此,我仍然建議不要使用MySQL進行全文搜索。 我建議您考慮使用專為執行全文搜索而設計的搜索服務器。 諸如Elasticsearch,Apache Solr或Sphinx之類的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM