2013-11-23 42 views
1

我有一個叫做「app_curso」請與Zend框架全文搜索2

這是這樣的表:

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.但我正在盡力與此相處。我希望有人知道如何進行這樣的搜索。

在此先感謝。

回答

-3

首先,全文索引僅適用於MySQL 5.6.4及更高版本的InnoDB引擎,因此除非您想要在使用任何不止一行的行時削弱性能,否則您需要確保使用的是MySQL 5.6.4或更高版本。

這樣說,我仍然建議不要使用MySQL進行全文搜索。我建議您查看一下使用專爲執行全文搜索而設計的搜索服務器。像Elasticsearch,Apache Solr或Sphinx。

+0

雖然我同意你所說的,但它不是上述* how *的問題的答案,使用Zend/Db。 –

+0

@BeshoyGirgis認真對待這個答案,證明有用的信息?無論如何,ZF2甚至Zend \ Db都沒有關於全文搜索的具體內容。我建議您在行使您的投票權限之前,先閱讀幫助中心的回答內容(提示:它特別指出告訴某人不要做某件事並提供替代方案作爲回答)。 – Tomdarkness