Meili Search 初体验
Jul 22, 2021
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
。
- 官网:https://www.meilisearch.com/
- 文档:https://docs.meilisearch.com/
- Github:https://github.com/meilisearch/MeiliSearch