An easiest way to use the official ManticoreSearch client in your Laravel or Lumen applications.
composer require evilfreelancer/laravel-manticoresearchThe package's service provider will automatically register its service provider.
Publish the configuration file:
php artisan vendor:publish --provider="ManticoreSearch\Laravel\ServiceProvider"After you publish the configuration file as suggested above, you may configure ManticoreSearch by adding the following to your application's .env file (with appropriate values):
MANTICORESEARCH_HOST=localhost MANTICORESEARCH_PORT=9200 MANTICORESEARCH_TRANSPORT=Http MANTICORESEARCH_USER= MANTICORESEARCH_PASS=| Name | Default value | Description |
|---|---|---|
| MANTICORESEARCH_CONNECTION | default | Name of default connection |
| MANTICORESEARCH_HOST | localhost | Address of host with Manticore server |
| MANTICORESEARCH_PORT | 9308 | Port number with REST server |
| MANTICORESEARCH_TRANSPORT | Http | Type of transport, can be: Http, Https, PhpHttp or your custom driver |
| MANTICORESEARCH_USER | Username | |
| MANTICORESEARCH_PASS | Password | |
| MANTICORESEARCH_TIMEOUT | 5 | Timeout between requests |
| MANTICORESEARCH_CONNECTION_TIMEOUT | 1 | Timeout before connection |
| MANTICORESEARCH_PROXY | Url of HTTP proxy server | |
| MANTICORESEARCH_PERSISTENT | true | Define whenever connection is persistent or not |
| MANTICORESEARCH_RETRIES | 2 | Amount of retries if connection is lost |
If you work with Lumen, please register the service provider and configuration in bootstrap/app.php:
// Enable shortname of facade $app->withFacades(true, [ 'ManticoreSearch\Laravel\Facade' => 'Facade', ]); // Register Config Files $app->configure('manticoresearch'); // Register Service Providers $app->register(ManticoreSearch\Laravel\ServiceProvider::class);Manually copy the configuration file to your application.
The ManticoreSearch facade is just an entry point into the ManticoreSearch client, so previously you might have used:
require_once __DIR__ . '/vendor/autoload.php'; $config = ['host'=>'127.0.0.1', 'port'=>9308]; $client = new \Manticoresearch\Client($config); $index = new \Manticoresearch\Index($client); $index->setName('movies'); Instead of these few lines above you can use single line solution:
$index = \ManticoreSearch::index('movies');That will run the command on the default connection. You can run a command on any connection (see the defaultConnection setting and connections array in the configuration file).
$index = \ManticoreSearch::connection('connectionName')->index($nameOfIndex); $pq = \ManticoreSearch::connection('connectionName')->pq(); $cluster = \ManticoreSearch::connection('connectionName')->cluster(); $indices = \ManticoreSearch::connection('connectionName')->indices(); $nodes = \ManticoreSearch::connection('connectionName')->nodes(); // etc...methods of the Client class:
\ManticoreSearch::connection('connectionName')->sql($params); \ManticoreSearch::connection('connectionName')->replace($params); \ManticoreSearch::connection('connectionName')->delete($params); // etc...Lumen users who aren't using facades will need to use dependency injection, or the application container in order to get the ManticoreSearch Index object:
// using injection: public function handle(\ManticoreSearch\Laravel\Manager $manticoresearch) { $manticoresearch->describe(); } // using application container: $manticoreSearch = $this->app('manticoresearch');Of course, dependency injection and the application container work for Laravel applications as well.
Since the PHP client of the ManticoreSearch supports logging through PSR-compatible loggers, you can use them in the same way as presented in the official documentation.
For example, you want to use the Monolog logger.
composer require monolog/monologBy default, you need to write something like this:
$logger = new \Monolog\Logger('name'); $logger->pushHandler(new \Monolog\Handler\StreamHandler('/my/log.file', Logger::INFO)); $config = ['host' => '127.0.0.1', 'port' => 9306]; $client = new \Manticoresearch\Client($config, $logger); $index = new \Manticoresearch\Index($client); $index->setName('movies');But if you want to use the Monolog together with this library then you may simplify your code like this:
$logger = new \Monolog\Logger('name'); $logger->pushHandler(new \Monolog\Handler\StreamHandler('/my/log.file', Logger::INFO)); $index = \ManticoreSearch::connection('connectionName', $logger)->index('movies');Just install dev requirements composer install --dev, then execute following command from root of this library:
./vendor/bin/phpunit

