实战中PHP使用Meiliserch实现全文检索的教程
MeiliSearch是一个快捷、易用且易部署的全文搜索引擎,支持自定义搜索和索引,支持容错搜索、过滤器和同义词。天生支持中文搜索。同时支持搜索结果词语高亮显示等。相比ElasticSearch,MeiliSearch更加轻量化。
目前,MeiliSearch还没有中文版的文档,网上的教程也只是文档翻译过来的简单的教程,实际中遇到的问题网上搜索也不好查找,教程很少,轻量级的全文搜索MeiliSearch,感觉以后会受欢迎的,操作也很简单!
前面两篇文章已经介绍了MeiliSearch服务器的配置及生产中如何自动运行的配置,MeiliSearch环境已经配置好了,那么就来讲一下PHP如何使用Meiliserch实现全文检索?
重点的注意:MeiliSearch的PHP运行环境php版本7.4+,这个PHP版本很重要,PHP7.4以下版本composer时下载不了最新的SDK,MeiliSearch官方文档中也没有讲到,在网上搜索的教程都没讲到这一点,这是一个坑!github下载的SDK文件是不全的,缺少了很多依赖文件,直接使用会报错的!
确认php版本是7.4+,个人建议使用composer下载MeiliSearch的SDK文件,下载的文件比较全,github下载的SDK文件没有psr、ralouphie、symfony、guzzlehttp、http-interop、php-http、clue这些依赖文件,直接使用github下载的SDK会报错!
composer require meilisearch/meilisearch-php \ guzzlehttp/guzzle \ http-interop/http-factory-guzzle:^1.0
<?php require_once __DIR__ . '/vendor/autoload.php'; use MeiliSearch\Client; $client = new Client('http://localhost:7700', 'Zm6J76XT6d84f3Wh'); $movies_list = [ ['id' => 1, 'title' => 'Carol', 'genres' => ['Romance, Drama']], ['id' => 2, 'title' => 'Wonder Woman', 'genres' => ['Action, Adventure']], ['id' => 3, 'title' => 'Life of Pi', 'genres' => ['Adventure, Drama']], ['id' => 4, 'title' => 'Mad Max: Fury Road', 'genres' => ['Adventure, Science Fiction']], ['id' => 5, 'title' => 'Moana', 'genres' => ['Fantasy, Action']], ['id' => 6, 'title' => 'Philadelphia', 'genres' => ['Drama']], ]; $client->createIndex('movies'); //创建movies键 $client->index('movies')->addDocuments($movies_list); //向movies键内赋值 $client->index('movies')->updateSettings([ 'searchableAttributes' => [ 'title', 'genres' ], ]); //添加可搜索字段,就是search要匹配哪些字段的内容 $client->index('movies')->updateFilterableAttributes(['id', 'title']); //过滤筛选匹配查询词的字段,将这些字段添加到filterableAttributes列表中,就可按条件过滤查询了,比如:'filter' => 'id < 200',意思是取id小于200的数据 $index = $client->index('movies')->search('Action', ['limit' => 20])->getHits();//查询movies键的数据,匹配“Action”内容的数据返回20条
其中的“Zm6J76XT6d84f3Wh"是之前设置的密钥,上一文中有讲到是--master-key设置的参数,以上操作是MeiliSearch常用到的方法,如有什么问题可以交流,共同学习!
评论列表