areirei/meilisearch-laravel-scout

Laravel Scout 自定义引擎用于 MeiliSearch

v0.12.6 2021-12-30 08:57 UTC

README

MeiliSearch Laravel Scout

[已弃用] MeiliSearch Laravel Scout

MeiliSearch | 文档 | Slack | 路线图 | 网站 | FAQ

Latest Stable Version Actions Status License Bors enabled

⚡ MeiliSearch 的 Laravel Scout 驱动程序

⚠️ 此包已弃用。我们建议您使用现在支持 MeiliSearch 的 Laravel Scout

MeiliSearch Laravel Scout 是 Laravel 的 MeiliSearch 驱动程序。

MeiliSearch 是一个开源搜索引擎。了解 MeiliSearch 是什么!

目录

📖 文档

查看我们的 文档 或我们的 API 参考

还可以查看此存储库的 Wiki

🔧 安装

安装插件

composer require areirei/meilisearch-laravel-scout

安装 HTTP 客户端

您可以使用任何 PSR-18 兼容的客户端来使用此 SDK。无需其他配置。
兼容的 HTTP 客户端和客户端适配器列表可在 php-http.org 找到。

如果您使用 Laravel 8,则可以跳过此部分,因为 laravel 默认预安装了 Guzzle 7。

Guzzle 7

composer require guzzlehttp/guzzle

如果您已经安装了 guzzle 且版本小于 7,请勿忘记更新 composer.json 中的版本。

"require": {
  "guzzlehttp/guzzle": "^7.0"
}

Guzzle 6

composer require php-http/guzzle6-adapter

Symfony Http Client

composer require symfony/http-client nyholm/psr7

Curl

composer require php-http/curl-client nyholm/psr7

导出配置

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"
php artisan vendor:publish --provider="Meilisearch\Scout\MeilisearchServiceProvider" --tag="config"

更新 .env 文件

SCOUT_DRIVER=meilisearch
MEILISEARCH_HOST=http://127.0.0.1:7700
MEILISEARCH_KEY=masterKey

运行 MeiliSearch

有许多简单的方法可以 下载和运行 MeiliSearch 实例

例如,如果您使用 Docker

docker run -it --rm -p 7700:7700 getmeili/meilisearch:latest ./meilisearch --master-key=masterKey

注意:您还可以从 HomebrewAPT 下载 MeiliSearch。

🚀 入门

索引

创建索引

// Create an index
php artisan scout:index books
// Create an index and give the primary-key
php artisan scout:index books --key book_id

添加文档

<?php

use Laravel\Scout\Searchable;

class Book extends Model
{
    use Searchable;
}
<?php

class BookController extends Controller
{
    public function store()
    {
        $book = new Book();
        $book->title = 'Pride and Prejudice';
        ...
        $book->save();
    }
}

您还可以使用 artisan 命令将所有表导入 meilisearch

php artisan scout:import "App\Book"

在索引中搜索

class BookController extends Controller
{
    public function search()
    {
        // MeiliSearch is typo-tolerant:
        Book::search('harry pottre')->get();
        // Or if you want to get the result from meilisearch:
        Book::search('harry pottre')->raw();
    }
}

删除文档

class BookController extends Controller
{
    public function destroy($id)
    {
        // Delete one document
        Book::find($id)->delete();
        // Delete several documents
        Book::destroy([1, 42]);
        // Delete all documents /!\
        Book::query()->delete();
    }
}

或者您可以使用 artisan 命令从索引中删除所有文档

php artisan scout:flush "App\Book"

删除索引

php artisan scout:index -d books

搜索

自定义搜索

所有支持选项都在文档的 搜索参数 部分中描述。

use MeiliSearch\Endpoints\Indexes;

class BookController extends Controller
{
    public function customSearch()
    {
        Book::search('prince', function (Indexes $meilisearch, $query, $options) {
            $options['filters'] = 'author="Antoine de Saint-Exupéry"';

            return $meilisearch->search($query, $options);
        })->take(3)->get();
    }
}

分页

class BookController extends Controller
{
    public function search()
    {
        Book::search('mustang')->paginate();
        // with a limit of items per page:
        Book::search('mustang')->paginate(5);
        // using meilisearch response:
        Book::search('mustang')->paginateRaw();
    }
}

🗃️ 设置

显示

编辑显示设置

// Get displayed
php artisan scout:display books
// Edit displayed
php artisan scout:display books book_id book_name
// Reset displayed
php artisan scout:display books --reset

唯一

编辑唯一设置

// Get distinct
php artisan scout:distinct books
// Edit distinct
php artisan scout:distinct books book_id
// Reset distinct
php artisan scout:distinct books --reset

可过滤

编辑可过滤设置

// Get filterable
php artisan scout:filter books
// Edit filterable
php artisan scout:filter books book_id book_name
// Reset filterable
php artisan scout:filter books --reset

排名

编辑排名规则

// Get ranking
php artisan scout:ranking books
// Edit ranking
php artisan scout:ranking books book_id book_name
// Reset ranking
php artisan scout:ranking books --reset

可搜索

编辑可搜索

// Get searchable
php artisan scout:search books
// Edit searchable
php artisan scout:search books book_id book_name
// Reset searchable
php artisan scout:search books --reset

可排序

编辑可排序

// Get sortable
php artisan scout:sort books
// Edit sortable
php artisan scout:sort books name
// Reset sortable
php artisan scout:sort books --reset

🤖 与 MeiliSearch 的兼容性

此包仅保证与 MeiliSearch 版本 v0.20.0 的兼容性。

💡 了解更多

如果您对 MeiliSearch 还不熟悉,以下部分可能会引起您的兴趣

💡 通过阅读 MeiliSearch PHP 客户端 的文档,您可以使用更高级的功能。

👍 本包是 Laravel Scout 的自定义引擎。

开发工作流程和贡献

这个项目欢迎任何新的贡献!

如果您想了解更多关于开发流程或想要贡献,请访问我们的贡献指南以获取详细说明!

MeiliSearch 提供并维护了许多像这样的 SDK 和集成工具。我们希望为任何类型的项目提供 出色的搜索体验。如果您想贡献、提建议或只是想了解目前的情况,请访问我们的 集成指南 存储库。