1. Go to this page and download the library: Download macfja/redisearch library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
macfja / redisearch example snippets
$clientFacade = new \MacFJA\RediSearch\Redis\Client\ClientFacade();
// With Predis
$client = $clientFacade->getClient(new \Predis\Client(/* ... */));
// With Phpredis extension
$client = $clientFacade->getClient(new \Redis([/* ... */]));
// With Phpiredis extension
$client = $clientFacade->getClient(phpiredis_connect($host));
// With Amp\Redis
$client = $clientFacade->getClient(new \Amp\Redis\Redis(new RemoteExecutor(Config::fromUri(/* ... */))));
// With Cheprasov
$client = $clientFacade->getClient(new \RedisClient\Client\Version\RedisClient6x0([/* ... */]));
// With Rediska
$client = $clientFacade->getClient(new \Rediska(['servers' => [[/* ... */]]]));
// With Redisent
$client = $clientFacade->getClient(new \redisent\Redis(/* ... */));
// With TinyRedisClient
$client = $clientFacade->getClient(new \TinyRedisClient(/* ... */));
// With Credis
$client = $clientFacade->getClient(new \Credis_Client(/* ... */));
$clientFacade = new \MacFJA\RediSearch\Redis\Client\ClientFacade();
$clientFacade->addFactory(\MyVendor\MyPackage\MyRedisClient::class);
$client = /* ... */;
$builder = new \MacFJA\RediSearch\IndexBuilder();
// Field can be created in advance
$address = (new \MacFJA\RediSearch\Redis\Command\CreateCommand\GeoFieldOption())
->setField('address');
$builder
->setIndex('person')
->addField($address)
// Or field can be created "inline"
->addTextField('lastname', false, null, null, true)
->addTextField('firstname')
->addNumericField('age')
->create($client);
use MacFJA\RediSearch\Query\Builder\GeoFacet;
use MacFJA\RediSearch\Query\Builder\Negation;
use MacFJA\RediSearch\Query\Builder\NumericFacet;
use MacFJA\RediSearch\Query\Builder\Optional;
use MacFJA\RediSearch\Query\Builder\Word;
use MacFJA\RediSearch\Redis\Command\SearchCommand\GeoFilterOption;
$queryBuilder = new \MacFJA\RediSearch\Query\Builder();
$query = $queryBuilder
->addElement(NumericFacet::greaterThan('age', 17))
->addString('Doe')
->addElement(
new Negation(
new GeoFacet(['address'], -74.044502, 40.589247, 40, GeoFilterOption::UNIT_KILOMETERS)
)
)
->addElement(new Optional(new Word('John')))
->render();
// The value of $query is:
// @age:[(17 +inf] Doe -@address:[-74.044502 40.589247 40.000000 km] ~John
use MacFJA\RediSearch\Redis\Command\Aggregate;
use MacFJA\RediSearch\Redis\Command\AggregateCommand\GroupByOption;
use MacFJA\RediSearch\Redis\Command\AggregateCommand\ReduceOption;
use MacFJA\RediSearch\Redis\Command\Search;
use MacFJA\RediSearch\Redis\Command\SugGet;
$client = /* ... */;
$query = '@age:[(17 +inf] %john%';
$search = new Search();
$search->setIndex('people')
->setQuery($query);
$stats = new Aggregate();
$stats->setIndex('people')
->setQuery($query)
->addGroupBy(new GroupByOption([], [
ReduceOption::average('age', 'avg'),
ReduceOption::maximum('age', 'oldest')
]));
$aggregate = new Aggregate();
$aggregate->setIndex('people')
->setQuery($query)
->addGroupBy(new GroupByOption(['lastname'], [ReduceOption::count('count')]));
$suggestion = new SugGet();
$suggestion->setDictionary('names')
->setPrefix('john')
->setFuzzy();
$result = $client->pipeline($search, $stats, $aggregate, $suggestion);
// $result[0] is the search result
// $result[1] is the first aggregation result
// $result[2] is the second aggregation result
// $result[3] is the suggestion result
$client = new \Predis\Client(/* ... */);
\MacFJA\RediSearch\Redis\Initializer::registerCommandsPredis($client->getProfile());
$client->ftsearch('people', '@age:[(17 +inf] %john%');
// But you will have raw Redis output.
$client = new \Rediska(/* ... */);
\MacFJA\RediSearch\Redis\Initializer::registerCommandsRediska();
$client->ftsearch('people', '@age:[(17 +inf] %john%');
// But you will have raw Redis output.
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.