在寫這篇之前,有介紹過了 Sphinx 一篇針對繁體中文檢索的教學,大家可以先去參考看看,把 Sphinx 服務架設起來,在搭配 CodeIgniter MVC Framework 使用,把 Sphinx 提供的 PHP API 放到 CI 的 Library 裡面就可以運作了,首先去官網下載套件,然後參考官方的安裝文件,大致上就差不多了,下載的檔案裡面會有 api 資料夾,裡面提供了 python, ruby, java, php 的 client 端檔案,讓您去自由呼叫,PHP 部份可以看 sphinxapi.php 這個檔案,我們也只需要把這個檔案放入 CI 的 Library 裡面,不過寫法有些改變,請看底下
- 非常簡單,開啟 sphinxapi.php 然後前面加上: 這是
Library 的擴充寫法,可以參考中文文件。存檔之後放入 application/libraries 檔名取 Sphinxapi.php 就可以了 2. 如何使用:預先載入到建構子
function __construct() { parent::Controller(); $this->load->library("sphinxapi"); }或者是加入到 config/autoload.php 裡面也是可以的 3. 使用 sphinxapi,請先設定 sphinxapi 裡面的 host 跟 port,設定完之後,就可以正常連接了
$index = 'test2'; // 您要索引的名稱 $start = 0; // 抓取起始筆數 $limit = 100; // 一次抓取 100 筆 $this->sphinxclient->SetWeights(array(100,1)); $this->sphinxclient->SetMatchMode(SPH_MATCH_ALL); $this->sphinxclient->SetLimits($start,$limit); $this->sphinxclient->SetArrayResult(true); // $keyword 你要查詢的字串 $res = $this->sphinxclient->Query($keyword,$index);$res 會回傳我們想要的資料,拿到之後,利用 $total = $res['total_found']; 取得查到的筆數,然後利用底下程式碼取得資料 auto increment ID
foreach($res['matches'] as $row) { $vedio[] = $row['id']; }在丟到 model 找到自己想要的資料,這樣就可以了,其實還有很多進階作法,這裡就不多說了,可以參考官方文件,都是設定 sphinx.conf 檔案。最後附上 sphinxapi.php 檔案程式碼:
See also
- CodeIgniter 3.0 Release 終於釋出啦
- CodeIgniter 搭配 Homestead 開發環境
- CodeIgniter 終於找到新東家 British Columbia Institute of Technology 英屬哥倫比亞理工學院
- 實戰 CodeIgniter in 成功大學計算機與網路中心
- 升級 PHP Facebook SDK 到 4.0.x 版本
- CodeIgniter 初始化 Library 流程
- HAProxy 搭配 CodeIgniter 取使用者真實 IP
- 2013 PHPConf Introduction to Gearman in PHP
- CodeIgniter REST Server with Backbone.js Issue
- Cross Site Request Forgery in JS Web Apps and CodeIgniter PHP Framework