{"id":16012309,"url":"https://github.com/cornernote/yii-sphinx","last_synced_at":"2025-07-28T09:10:17.096Z","repository":{"id":56958139,"uuid":"20790501","full_name":"cornernote/yii-sphinx","owner":"cornernote","description":"Yii extension for Sphinx Search","archived":false,"fork":false,"pushed_at":"2022-01-13T01:23:22.000Z","size":34,"stargazers_count":2,"open_issues_count":1,"forks_count":5,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-18T06:41:25.721Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cornernote.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-06-13T03:07:24.000Z","updated_at":"2016-12-01T06:34:34.000Z","dependencies_parsed_at":"2022-08-21T05:10:21.972Z","dependency_job_id":null,"html_url":"https://github.com/cornernote/yii-sphinx","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/cornernote/yii-sphinx","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cornernote%2Fyii-sphinx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cornernote%2Fyii-sphinx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cornernote%2Fyii-sphinx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cornernote%2Fyii-sphinx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cornernote","download_url":"https://codeload.github.com/cornernote/yii-sphinx/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cornernote%2Fyii-sphinx/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267490663,"owners_count":24096019,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-28T02:00:09.689Z","response_time":68,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-08T14:02:40.021Z","updated_at":"2025-07-28T09:10:17.070Z","avatar_url":"https://github.com/cornernote.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"yii-sphinx\n==========\n\nYii extension for Sphinx Search\n\nforked from http://www.yiiframework.com/extension/dgsphinxsearch/\n\n\n```php\nreturn array(\n    'aliases' =\u003e array(\n        'sphinx' =\u003e realpath(VENDOR_PATH . '/cornernote/yii-sphinx/sphinx'),\n    ),\n    'components' =\u003e array(\n        'sphinx' =\u003e array(\n            'class' =\u003e 'sphinx.components.ESphinxSearch',\n            'server' =\u003e '127.0.0.1',\n            'port' =\u003e 9312,\n            'maxQueryTime' =\u003e 3600,\n            'enableProfiling' =\u003e YII_DEBUG,\n            'enableResultTrace' =\u003e YII_DEBUG,\n        ),\n       'dbSphinx' =\u003e array(\n            'class' =\u003e 'sphinx.components.ESphinxDbConnection',\n            'connectionString' =\u003e 'mysql:host=127.0.0.1;port=9306',\n            'emulatePrepare' =\u003e true,\n            'charset' =\u003e 'utf8',\n            'schemaCachingDuration' =\u003e 3600,\n            'enableProfiling' =\u003e YII_DEBUG,\n            'enableParamLogging' =\u003e YII_DEBUG,\n        ),\n     ),\n);\n```\n\n\nSearch by criteria Object:\n\n```php\n// create the criteria\n$searchCriteria = new ESphinxCriteria();\n$searchCriteria-\u003eselect = 'id';\n$searchCriteria-\u003efilters = array('status' =\u003e 1);\n$searchCriteria-\u003equery = 'keywords';\n$searchCriteria-\u003efrom = 'product';\n$searchCriteria-\u003egroupby = 'id';\n$searchCriteria-\u003eorders = array('name' =\u003e 'ASC');\n$searchCriteria-\u003epaginator-\u003epageSize = 1000;\n$searchCriteria-\u003efieldWeights = array(\n    'name' =\u003e 20,\n    'description' =\u003e 1,\n);\n\n// get the result\n$resIterator = Yii::app()-\u003esphinx-\u003esearch($searchCriteria); // interator result\n// or\n$resArray = Yii::app()-\u003esphinx-\u003esearchRaw($searchCriteria); // array result\n```\n\n\nSearch by SQL-like syntax:\n\n```php\n$search-\u003eselect('*')-\u003e\n    from($indexName)-\u003e\n    where($expression)-\u003e\n    filters(array('project_id' =\u003e $this-\u003e_city-\u003eid))-\u003e\n    groupby($groupby)-\u003e\n    orderby(array('f_name' =\u003e 'ASC'))-\u003e\n    limit(0, 30);\n$resIterator = $search-\u003esearch(); // interator result\n/* OR */\n$resArray = $search-\u003esearchRaw(); // array result\n```\n\n\nSearch by SphinxClient syntax:\n\n```php\n$search = Yii::App()-\u003esearch;\n$search-\u003esetSelect('*');\n$search-\u003esetArrayResult(false);\n$search-\u003esetMatchMode(SPH_MATCH_EXTENDED);\n$search-\u003esetFieldWeights($fieldWeights)\n$resArray = $search-\u003equery( $query, $indexName);\n```\n\n\nCombined Method:\n\n```php\n$search = Yii::App()-\u003esearch-\u003e\n    setArrayResult(false)-\u003e\n    setMatchMode(SPH_MATCH_EXTENDED);\n$resIterator = $search-\u003eselect('field_1, field_2')-\u003esearch($searchCriteria);\n```\n\n\nFinding Models:\n\n```php\n$ids = array_keys($resArray['matches']);\n$criteria = new CDbCriteria;\n$criteria-\u003eaddInCondition('id', $ids);\n$criteria-\u003eorder = 'FIELD(t.id, ' . implode(', ', $ids) . ')'; // order by weight\n$products = Product::model()-\u003efindAll($criteria);\n```\n\n\nReal-Time Index via ActiveRecord:\n\n```php\nclass Product extends CActiveRecord\n{\n\n    public function tableName()\n    {\n        return 'product';\n    }\n\n    public function afterSave() \n    {\n        ProductIndex::model()-\u003eupdateIndex($this);\n        parent::afterSave();\n    }\n\n    public function afterDelete() \n    {\n        ProductIndex::model()-\u003edeleteIndex($this);\n        parent::afterDelete();\n    }\n\n}\n\n\nclass ProductIndex extends ESphinxActiveRecord\n{\n\n    public function tableName()\n    {\n        return 'product';\n    }\n\n    public function truncateIndex()\n    {\n        $this-\u003edbConnection-\u003ecreateCommand('TRUNCATE RTINDEX ' . ProductIndex::model()-\u003etableName())-\u003eexecute();\n    }\n\n    public function deleteIndex($product)\n    {\n        $this-\u003edbConnection-\u003ecreateCommand(\"DELETE FROM \" . ProductIndex::model()-\u003etableName() . \" WHERE id = \" . $product-\u003eid)-\u003eexecute();\n    }\n\n    public function updateIndex($product)\n    {\n        $productIndex = new ProductIndex();\n        $productIndex-\u003eid = $product-\u003eid;\n        $productIndex-\u003ename = $product-\u003ename;\n        $productIndex-\u003edescription = $product-\u003edescription;\n        $productIndex-\u003estatus = $product-\u003estatus;\n        $productIndex-\u003esave(false);\n    }\n\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcornernote%2Fyii-sphinx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcornernote%2Fyii-sphinx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcornernote%2Fyii-sphinx/lists"}