Meili Search 初体验
Meili Search 初体验
介绍
Meili Search
是近两年开源的一个搜索引擎项目,其出色的上手速度和小规模数据量下的体验比 ElasticSearch
更加出色。
为什么老外会给这个项目起一个中文拼音名字呢?提说是 Meili
是在挪威神话中的神,指 “可爱的人”,是托尔的兄弟。
其功能、用法和 ES Search
十分相似,该项目开箱即支持中文分词
,这点对我们而言,比 ES Search
更加友好,更易上手。
安装
$ curl -L https://install.meilisearch.com | sh
完成后,应该会看到
它的数据存储:
Index > Document
和 ES Search
十分相似,但又简单了许多。
启动:
$ ./meilisearch --master-key=KpxaSzakqwDZzpQ66DLr3VvcNE0E6YDKijyMZLLHTAUuxphwPYt2IXPhz4i4
在启动实例时,可以选择设置主密钥,如果这样做的话,所有路由都会收到保护,需要密钥才能访问。
如:
如上图,如果在启动时设置了 --master-key
参数,那么所有API都需要在header
中带上 X-Meili-API-Key
参数,对应的值,就是--master-key
的值。
填充数据
引入官方SDK
$ composer require meilisearch/meilisearch-php
向 目标
index 中填充影片数据(document)
- ID,Mysql ID
- name,影片名
$masterKey = "KpxaSzakqwDZzpQ66DLr3VvcNE0E6YDKijyMZLLHTAUuxphwPYt2IXPhz4i4";
$client = new Client('http://127.0.0.1:7700', $masterKey);
$index = $client->index('mediachain');
$qb = Movie::query()->select(['name', 'id']);
$qb->chunkById(1000, function ($movies) use (&$index) {
$documents = [];
foreach ($movies as $movie) {
$documents[] = [
'name' => $movie->name,
'id' => $movie->id,
];
}
$result = $index->addDocuments($documents);
$updateID = $result['updateId'];
$this->info("update ID: $updateID");
});
return 0;
测试搜索:
$client = new Client('http://127.0.0.1:7700', $masterKey);
$index = $client->index('mediachain');
json_encode($index->search('顶楼')->getHits());
结果:
[
{
"id":51718,
"name":"顶楼"
},
{
"id":24372,
"name":"顶楼大象"
},
{
"id":47377,
"name":"顶楼 第三季"
},
{
"id":49775,
"name":"顶楼 第二季"
},
{
"id":3030,
"name":"顶牛"
},
{
"id":4926,
"name":"钟楼小精灵"
},
{
"id":13431,
"name":"阁楼房客是总裁"
},
{
"id":16554,
"name":"顶级阴谋"
},
{
"id":17065,
"name":"青楼初次的秘密"
},
{
"id":18660,
"name":"高楼大劫案"
},
{
"id":20181,
"name":"钟楼怪人"
},
{
"id":20747,
"name":"黑楼孤魂"
},
{
"id":21236,
"name":"鬼楼"
},
{
"id":24670,
"name":"顶香"
},
{
"id":28121,
"name":"顶层楼房"
},
{
"id":28186,
"name":"高楼惊魂"
},
{
"id":28714,
"name":"顶级乐队"
},
{
"id":29845,
"name":"青楼十二房"
},
{
"id":31310,
"name":"钟楼怪人2:老实钟的秘密"
},
{
"id":35539,
"name":"阁楼"
}
]
结论
确实非常简单易上手,如果业务场景对搜索要求并未十分苛刻,且数据规模处于中、小规模,十分建议使用 Meili Search
。
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: