shokme / laravel-scout-meilisearch

该包已被弃用,不再维护。作者建议使用 https://github.com/meilisearch/meilisearch-laravel-scout 包。

MeiliSearch 的 Laravel Scout 定制引擎

v1.0.0 2020-04-16 14:47 UTC

This package is auto-updated.

Last update: 2020-04-18 18:18:54 UTC


README

Licence

MeiliSearch 的 Laravel scout 包。

MeiliSearch 提供了一个超相关的即时全文搜索。我们的解决方案是开源的,您可以在这里查看我们的仓库。

这里是 MeiliSearch 文档 📖

目录

安装

Composer

$ composer require meilisearch/meilisearch-laravel-scout

导出配置

$ 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

NB:您也可以从 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

搜索

自定义搜索

所有支持选项的描述见 本节文档

class BookController extends Controller
{
    public function customSearch()
    {   
        Book::search('prince', function (Index $meilisearch, $query, $options) {
            $options['filters'] = 'author="Antoine de Saint-Exupéry"';
            
            return $meilisearch->search($query, $options);
        })->limit(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();
    }
}

与 MeiliSearch 的兼容性

此包适用于 MeiliSearch >=v0.10

附加说明

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

此包是Laravel Scout的自定义引擎。