alister / php-redisearch

PHP Client for RediSearch

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

PHP RediSearch

MacFJA/redisearch is a PHP Client for RediSearch.

The implemented API is for RediSearch 2.0

Installation

composer require macfja/redisearch

Usage

Create a new index

$client = new \Predis\Client(/* ... */);
$builder = new \MacFJA\RedisSearch\Index\Builder($client);

// Field can be create in advance
$address = new \MacFJA\RedisSearch\Index\Builder\GeoField('address');

$builder
    ->withName('person')
    ->addField($address)
    // Or field can be create "inline"
    ->addTextField('lastname', false, null, null, true)
    ->addTextField('firstname')
    ->addNumericField('age')
    ->create();

Add a document

$client = new \Predis\Client(/* ... */);
$index = new \MacFJA\RedisSearch\Index('person', $client);
$index->addFromArray([
    'firstname' => 'Joe',
    'lastname' => 'Doe',
    'age' => 30,
    'address' => '40.689247,-74.044502'
]);

Search

$client = new \Predis\Client(/* ... */);
$search = new \MacFJA\RedisSearch\Search($client);

$results = $search
    ->withIndex('person')
    ->withQuery('Doe')
    ->withHighlight(['lastname'])
    ->withScores()
    ->search();

Create a search query

use \MacFJA\RedisSearch\Search\QueryBuilder\NumericFacet;
use \MacFJA\RedisSearch\Search\QueryBuilder\Negation;
use \MacFJA\RedisSearch\Search\QueryBuilder\GeoFacet;
use \MacFJA\RedisSearch\Search\QueryBuilder\Optional;
use \MacFJA\RedisSearch\Search\QueryBuilder\Word;
use \MacFJA\RedisSearch\Search\GeoFilter;

$queryBuilder = \MacFJA\RedisSearch\Search\QueryBuilder::create();
$query = $queryBuilder
    ->addExpression(NumericFacet::greaterThan('age', 17))
    ->addString('Doe')
    ->addExpression(
        new Negation(
            new GeoFacet('address', 40.589247, -74.044502, 40, GeoFilter::UNIT_KILOMETERS)
        )
    )
    ->addExpression(new Optional(new Word('John')))
    ->render();

// The value of $query is:
// Doe ~John @age:[(17 +inf] -@address:[40.589247 -74.044502 40.000000 km]

Similar projects

Contributing

You can contribute to the library. To do so, you have Github issues to:

  • ask your question
  • notify any change in the providers
  • suggest new provider
  • request any change (typo, bad code, etc.)
  • and much more...

You also have PR to:

  • add a new provider
  • suggest a correction
  • and much more...

See CONTRIBUTING for more information.

License

The MIT License (MIT). Please see License File for more information.

About

PHP Client for RediSearch

License:MIT License


Languages

Language:PHP 99.2%Language:Makefile 0.8%