Yii 是一個基於組件、用於開發大型 Web 應用的高性能 PHP 框架。Yii提供了今日Web 2.0應用開發所須要的幾乎一切功能。Yii是最有效率的PHP框架之一。官方網站 php
ElasticSearch 是一個基於Lucene構建的開源,分佈式,RESTful搜索引擎。設計用於雲計算中,可以達到實時搜索,穩定,可靠,快速,安裝使用方便。支持經過HTTP使用JSON進行數據索引。官方網站 git
Elastica 是用php寫的elasticsearch客戶端,經過Elastica可很方便的在php應用中訪問elasticsearch,如:建立索引,添加文檔等。官方網站
github
在Yii中集成elasticsearch其實很是簡單: app
第一步:將下載的Elastica整個拷貝到protected/vendors/目錄下(注意:若是是從github上clone下來的,應該是Elastica下lib下面的Elastica) 框架
第二步:編寫Elastica類自動導入文件,如 ElasticaAutoLoader.php yii
<?php /** * Description of ElasticaAutoLoader * * @author Owner */ class ElasticaAutoLoader { /** * @var array class prefixes */ static $prefixes = array( 'Elastica' ); /** * @var string path to where Zend classes root is located */ static $basePath = null; /** * Class autoload loader. * * @static * @param string $className * @return boolean */ static function loadClass($className) { foreach (self::$prefixes as $prefix) { if (strpos($className, $prefix . '_') !== false) { if (!self::$basePath) self::$basePath = Yii::getPathOfAlias("application.vendors") . '/'; include self::$basePath . str_replace('_', '/', $className) . '.php'; return class_exists($className, false) || interface_exists($className, false); } } return false; } } ?>
第三步:修改index.php文件 elasticsearch
將 分佈式
<?php // change the following paths if necessary $yii=dirname(__FILE__).'/../yii/framework/yii.php'; $config=dirname(__FILE__).'/protected/config/main.php'; // remove the following lines when in production mode defined('YII_DEBUG') or define('YII_DEBUG',true); // specify how many levels of call stack should be shown in each log message defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL',3); require_once($yii); Yii::createWebApplication($config)->run();改成:
<?php // change the following paths if necessary $yii = dirname(__FILE__) . '/../yii/framework/yii.php'; $config = dirname(__FILE__) . '/protected/config/main.php'; // remove the following lines when in production mode defined('YII_DEBUG') or define('YII_DEBUG', true); // specify how many levels of call stack should be shown in each log message defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL', 3); require_once(dirname(__FILE__) . '/protected/functions/yii.php'); require_once(dirname(__FILE__) . '/protected/functions/functions.php'); require_once($yii); $app = Yii::createWebApplication($config); // adding custom Zend Framework autoloader Yii::import("application.vendors.*"); Yii::import("application.components.ElasticaAutoLoader", true); Yii::registerAutoloader(array('ElasticaAutoLoader','loadClass'), true); $app->run();完成上面幾步就能夠直接在程序中使用了!