manticoresoftware / manticoresearch-php
PHP Client for Manticore Search
Installs: 425 352
Dependents: 18
Suggesters: 0
Security: 0
Stars: 197
Watchers: 13
Forks: 35
Open Issues: 18
pkg:composer/manticoresoftware/manticoresearch-php
Requires
- php: ^7.4|^8.0
- ext-json: *
- php-http/discovery: ^1.14
- psr/log: ^1.1 || ^2.0 || ^3.0
Requires (Dev)
- mockery/mockery: *
- phpstan/phpstan: ^1.4
- phpunit/phpunit: >=7.5 || ^10.5
- slevomat/coding-standard: ^7.0
- squizlabs/php_codesniffer: ^3.7
Suggests
- ext-curl: *
- guzzlehttp/psr7: >=1.6
- monolog/monolog: *
- php-http/curl-client: >=1.7
- php-http/httplug: ^1.1
- php-http/message: ^1.7
- dev-master
- 4.0.1.x-dev
- 4.0.1
- 4.0.0.x-dev
- 4.0.0
- 3.2.0.x-dev
- 3.2.0
- 3.1.0.x-dev
- 3.1.0
- 3.0.1.x-dev
- 3.0.1
- 3.0.0.x-dev
- v3.0.0
- 2.3.1.x-dev
- v2.3.1
- v2.3.0
- 2.2.0.x-dev
- v2.2.0
- 2.1.2.x-dev
- 2.1.2
- 2.1.1
- 2.1.0
- 2.0.0
- 1.x-dev
- 1.8.0
- 1.7.0
- 1.6.2
- 1.6.0
- 1.5.2
- 1.5.0
- 1.4
- 1.3
- 1.2
- 1.1
- 1.0
- dev-issue-255
- dev-update/nomoreexceptions_msg
- dev-escaping-column-name-when-creating-a-table
- dev-builder
This package is auto-updated.
Last update: 2025-10-22 07:23:44 UTC
README
Official PHP client for Manticore Search.
❗ WARNING: this is a development version of the client. The latest release's readme is https://github.com/manticoresoftware/manticoresearch-php/tree/4.0.1
Features
- One to one mapping with the HTTP API
- connection pools with pluggable selection strategy. Defaults to static round robin
- pluggable PSR/Log interface
- pluggable transport protocols.
- persistent connections
Requirements
Requires PHP 7.1 or greater with the native JSON extension. Default transport handler uses the cURL extension.
Minimum Manticore Search version is 2.5.1 with HTTP protocol enabled.
| Manticore Search | manticoresearch-php | PHP |
|---|---|---|
| >= 7.0.0 | 4.0.x | >= 7.4, >=8.0 |
| >= 6.3.6 | 3.2.x | >= 7.4, >=8.0 |
| >= 6.2.0 | 3.1.x | >= 7.4, >=8.0 |
| >= 6.2.0 | 3.0.x | >= 7.4, >=8.0 |
| >= 6.0.4 | 3.0.x | >= 7.1, >=8.0 |
| >= 4.2.1 | 2.0.x, 2.1.x, 2.2.x | >= 7.1, >=8.0 |
| >= 4.0.2 | 1.7.x, 1.8.x | >= 7.1, >=8.0 |
| >= 3.5.2 | 1.6.x | >= 7.1, >=8.0 |
| >= 3.5.0 | 1.5.x | >= 7.1, <8.0 |
| >= 3.5.0 | 1.4 | >= 7.1, <8.0 |
| <= 3.4.x | 1.3 | >= 7.1, <8.0 |
| >= 2.5.1, <3.4.0 | 1.2 | >= 7.1, <8.0 |
Documentation
Full documentation is available in docs folder.
Manticore Search server documentation: https://manual.manticoresearch.com/.
Getting Started
Install the Manticore Search PHP client using composer package manager:
composer require manticoresoftware/manticoresearch-php:dev-master
Initiate a table:
require_once __DIR__ . '/vendor/autoload.php'; $config = ['host'=>'127.0.0.1','port'=>9308]; $client = new \Manticoresearch\Client($config); $table = $client->table('movies');
Create the table:
$table->create([ 'title'=>['type'=>'text'], 'plot'=>['type'=>'text'], '_year'=>['type'=>'integer'], 'rating'=>['type'=>'float'] ]);
Add a document:
$table->addDocument([ 'title' => 'Star Trek: Nemesis', 'plot' => 'The Enterprise is diverted to the Romulan homeworld Romulus, supposedly because they want to negotiate a peace treaty. Captain Picard and his crew discover a serious threat to the Federation once Praetor Shinzon plans to attack Earth.', '_year' => 2002, 'rating' => 6.4 ], 1);
Add several documents at once:
$table->addDocuments([ ['id'=>2,'title'=>'Interstellar','plot'=>'A team of explorers travel through a wormhole in space in an attempt to ensure humanity\'s survival.','_year'=>2014,'rating'=>8.5], ['id'=>3,'title'=>'Inception','plot'=>'A thief who steals corporate secrets through the use of dream-sharing technology is given the inverse task of planting an idea into the mind of a C.E.O.','_year'=>2010,'rating'=>8.8], ['id'=>4,'title'=>'1917 ','plot'=>' As a regiment assembles to wage war deep in enemy territory, two soldiers are assigned to race against time and deliver a message that will stop 1,600 men from walking straight into a deadly trap.','_year'=>2018,'rating'=>8.4], ['id'=>5,'title'=>'Alien','plot'=>' After a space merchant vessel receives an unknown transmission as a distress call, one of the team\'s member is attacked by a mysterious life form and they soon realize that its life cycle has merely begun.','_year'=>1979,'rating'=>8.4] ]);
Perform a search:
$results = $table->search('space team')->get(); foreach($results as $doc) { echo 'Document:'.$doc->getId()."\n"; foreach($doc->getData() as $field=>$value) { echo $field.": ".$value."\n"; } }
Result:
Document:2
year: 2014
rating: 8.5
title: Interstellar
plot: A team of explorers travel through a wormhole in space in an attempt to ensure humanity's survival.
A text search with attribute filters:
$results = $table->search('space team') ->filter('_year','gte',2000) ->filter('rating','gte',8.0) ->sort('_year','desc') ->get(); foreach($results as $doc) { echo 'Document:'.$doc->getId()."\n"; foreach($doc->getData() as $field=>$value) { echo $field.": ".$value."\n"; } }
Update documents:
By document id:
$table->updateDocument(['_year'=>2019],4);
By query:
$table->updateDocument(['_year'=>2019],['match'=>['*'=>'team']]);
Get table schema:
$table->describe();
Drop table:
$table->drop();
The above will fail if the table does not exist. To get around this pass a parameter of true, which cause the failure to be silent.
$table->drop(true);
License
Manticore Search PHP Client is an open-source software licensed under the MIT license