mongosoft / yii2-xmlpipe
Sphinx XmlPipe Extension for Yii 2
Installs: 8 993
Dependents: 0
Suggesters: 0
Security: 0
Stars: 7
Watchers: 4
Forks: 0
Type:yii2-extension
Requires
- php: >=5.4.0
- ext-libxml: *
- yiisoft/yii2: *
This package is auto-updated.
Last update: 2024-12-12 18:20:22 UTC
README
This extension provides an easy way to create xmlpipe2 data source for the Sphinx search engine.
Installation
The preferred way to install this extension is through composer.
Either run
composer require --prefer-dist mongosoft/yii2-xmlpipe "*"
or add
"mongosoft/yii2-xmlpipe": "*"
to the require
section of your composer.json
file.
Usage
XmlPipe document
<?php namespace app\models; use mongosoft\xmlpipe\BaseXmlPipe; class XmlPipeDocument extends BaseXmlPipe { /** * @inheritdoc */ public function fields() { return [ 'name', 'description', ]; } /** * @inheritdoc */ public function attributes() { return [ ['name' => 'type', 'type' => 'int', 'bits' => 16], ['name' => 'name', 'type' => 'string'], ['name' => 'description', 'type' => 'string'], ]; } /** * @inheritdoc */ public function addDocuments() { $query = Items::find() ->select(['type', 'full_name', 'description']) ->asArray(); foreach ($query->each() as $item) { $this->pushDocument([ 'type' => $item['type'], 'name' => $item['full_name'], 'description' => $item['description'], ]); } } }
Controller
<?php namespace app\controllers; use yii\web\Controller; class TestController extends Controller { /** * @inheritdoc */ public function actions() { return [ 'xmlpipe' => [ 'class' => 'mongosoft\xmlpipe\Action', 'document' => 'app\models\XmlPipeDocument', ], ]; } }
Sphinx config
Add the following lines to the configuration file (sphinx.conf)
source myindex { type = xmlpipe2 xmlpipe_command = curl http://localhost/test/xmlpipe } index myindex { source = myindex path = /var/path/to/index/myindex docinfo = extern morphology = lemmatize_ru charset_type = utf-8 }