PHP redisearch的使用

本文介绍了如何在PHP中使用redisearch客户端进行操作,包括初始化客户端、执行搜索、范围查找、过滤特定tag以及处理查询结果,提供了详细的步骤和实例。

 下载PHP redisearch

composer require macfja/redisearch

这个客户端支持redis扩展 ,predis等

GitHub - MacFJA/php-redisearch: PHP Client for RediSearch

https://redis.io/commands/ft.create/

我这里命令执行创建索引

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;
            }
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苗先生的PHP记录

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值