下载PHP redisearch github.com/MacFJA/php-…
composer require macfja/redisearch
这个客户端支持redis扩展 ,predis等
我这里命令执行创建索引
ft.CREATE userIdx ON HASH PREFIX 1 {user}:id: SCHEMA city TEXT id NUMERIC nickname TEXT mobile TEXT address GEO status TAG dispatch_status TAG SORTABLE NOINDEX push_token text
初始化客户端
$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(/* ... */));
实例search
// redisearch 搜索器实例
$search = new \MacFJA\RediSearch\Redis\Command\Search();
$queryBuilder = new \MacFJA\RediSearch\Query\Builder();
范围查找
$queryBuilder->addGeoFacet('address', 经度, 纬度, 范围,\MacFJA\RediSearch\Redis\Command\SearchCommand\GeoFilterOption::UNIT_KILOMETERS);
不查找某些tag
$queryBuilder->addElement(
new Negation(
new TagFacet(['id'],...$notSearchUsers) // 我这里$notSearchUsers 是一个数组 , 所以展开
));
查找数字大于
$queryBuilder->addElement(NumericFacet::greaterThan('age', 17))
执行查询
$query = $queryBuilder->render();
$search->setIndex("userIdx"); // 我这里的索引名
$search->setLimit(0,100); // 查找固定数量
$search->setReturn('id','mobile'); // 设置返回值
$search->setQuery($query); // 设置查询语句
$results = $client->execute($search); // 执行语句
$results->setClient($client);
查询结果转数组
foreach ($results as $pageIndex => $pageContent) {
foreach ($pageContent as $key => $val) {
$fields = $val->getFields();
$users[] = $fields;
}
}