opendi / solrclient
Client for Apache Solr
Installs: 2 913
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 8
Forks: 1
Open Issues: 0
Requires
- php: >=5.5.9
- guzzlehttp/guzzle: ^6.0.0
- opendi/lang: ^1.0.0
- pimple/pimple: ^3.0.0
- symfony/console: ^3.0.0
- symfony/finder: ^3.0.0
Requires (Dev)
This package is not auto-updated.
Last update: 2024-12-15 08:41:06 UTC
README
Classes for the busy PHP developer to work with Apache Solr.
Requirements
This package requires at least PHP 5.5.9.
Construction
First, you must construct a Guzzle HTTP client and set the base_uri
option to
the Solr endpoint you wish to work with. Then use it to create a Solr Client.
use Opendi\Solr\Client\Client; $guzzle = new \GuzzleHttp\Client([ 'base_uri' => "http://localhost:8983/solr/" ]); $client = new Client($guzzle);
It's also possible to pass some default request options, such as headers and timeouts to the Guzzle client.
use Opendi\Solr\Client\Client; $guzzle = new \GuzzleHttp\Client([ 'base_uri' => "http://localhost:8983/solr/", 'defaults' => [ 'timeout' => 10 ] ]); $solr = new Client($guzzle);
See Guzzle documentation for all options.
There is a helper factory($url, $defaults)
static method which does the same
as above.
use Opendi\Solr\Client\Client; $solr = Client::factory('http://localhost:8983/solr/', [ 'timeout' => 10 ]);
Working with cores
A core
is solar terminology for a collection of records. To select a core, use
the core($name)
method on the Solr Client.
$core = $client->core('places'); // Perform a select query $select = Solr::select()->search('name:Franz'); $client->core('places')->select($select); // Perform an update query $update = Solr::update()->body('{}'); $client->core('places')->update($update);
The Core object offers some helper methods:
// Returns core status $client->core('places')->status(); // Returns number of documents in a core $client->core('places')->count(); // Deletes all records in the core $client->core('places')->deleteAll(); // Deletes records matching a selector $client->core('places')->deleteByQuery('name:Opendi'); // Deletes record with the given ID $client->core('places')->deleteByID('100'); // Checks the core is up $client->core('places')->ping(); // Optimizes core documents $client->core('places')->optimize(); // Commits inserted documents $client->core('places')->commit();