tinywan / meilisearch
a simple PHP library for the Meilisearch API
v0.0.1
2022-04-14 12:44 UTC
Requires
- php: >=7.4
- guzzlehttp/guzzle: ^7.0
- meilisearch/meilisearch-php: ^0.23.1
- php-di/php-di: ^6.4
- psr/container: ^1.1 | ^2.0
Requires (Dev)
- phpunit/phpunit: ~7.0|~8.0|~9.0
- workerman/webman: ^1.0
README
Meilisearch
MeiliSearch是一个功能强大,快速,开源,易于使用和部署的搜索引擎。搜索和索引都是高度可定制的。允许输入、过滤器和同义词等特性都是开箱即用的。是近两年开源的项目,同样也支持中文分词,在小数据规模下可以实现比ElasticSearch更加快速和易用的搜索体验。更多安装、配置、使用等细节请参考官方文档或交友网站
安装
composer require tinywan/meilisearch
使用
初始化配置
$config = [ 'url' => 'http://127.0.0.1:7700', 'key' => '', 'guzzle' => [ 'headers' => [ 'charset' => 'UTF-8', ], 'timeout' => 20 ], ]; // 调用 config 方法初始化 Tinywan\Meilisearch::config($config);
基本使用
1. 创建索引
Tinywan\Meilisearch::search()->index('meilisearch');
2. 添加文档
$documents = [ ['id' => 1, 'title' => '酒吧墙面装饰美式复古咖啡厅'], ['id' => 2, 'title' => '工艺品桌面摆件'], ['id' => 3, 'title' => '现代简约三联餐厅壁画玄关挂画'], ['id' => 4, 'title' => '现代简约时尚单头餐吊灯创意个性吧台'] ]; Tinywan\Meilisearch::search()->index('meilisearch')->addDocuments($documents);
3. 默认查询
Tinywan\Meilisearch::search()->index('meilisearch')->search('桌面摆件')->getRaw();
getRaw()
返回数组
返回字段
hits
命中的结果offset
页大小limit
每页条数processingTimeMs
处理耗时query
查询的内容
前端集成
数据查询
分页查询
http://172.30.32.1:7700/indexes/mall_goods/search?limit=1&offset=3
http://172.30.32.1:7700/indexes/mall_goods_27_30/search?q=10
offset
页大小limit
每页条数
关键字查询
http://172.30.32.1:7700/indexes/mall_goods_27_30/search?q=桌面摆件
数据添加
已经存在的数据
- 直接批量添加即可
$documents = Db::table('mall_goods') ->field('id,name,default_image') ->whereIn('goods_id',[30]) ->limit(2) ->select() ->toArray(); Tinywan\Meilisearch::search()->index('meilisearch')->addDocuments($documents);
- 新添加的商品,单独添加
$documents = [ ['id' => 1, 'title' => '酒吧墙面装饰美式复古咖啡厅'], ]; Tinywan\Meilisearch::search()->index('meilisearch')->addDocuments($documents);
Test
vendor/bin/phpstan analyse -l 5 src
vendor/bin/php-cs-fixer fix src
Other
Config
- ① 配置初始化
Tinywan\Meilisearch::config([])
- ② 调用构造函数
new self($config, $container)
- ③ 构造函数注册服务
$this->registerServices($config, $container);
- ④ 注册服务:核心服务和自定义服务
- ⑤ 核心服务
ContainerServiceProvider
注册函数register($data)
调用 - ⑥ 注册函数
register($data)
调用PSR11实现的DI依赖注入扩展DI\ContainerBuilder
- ⑦ 通过依赖注入扩展
DI\ContainerBuilder
为容器服务ContainerServiceProvider
指定容器MeiliSearch::setContainer($container);
- ⑧ 通过依赖注入扩展
DI\ContainerBuilder
为当前服务设置容器MeiliSearch::setContainer($container);
- ⑨ 获取当前设置的容器
var_dump(MeiliSearch::getContainer()); 获取对象:class DI\Container#101 (8) {}
文件加载
TP6 Container 调用反射执行类的实例化。并不是按照标准的PSR11的容器接口实现的