eljump/laravel-scout-sphinx

Laravel Scout Sphinx 驱动器

v1.0.0 2023-06-28 13:53 UTC

This package is auto-updated.

Last update: 2024-09-29 10:35:12 UTC


README

介绍

本包是 constantable/laravel-scout-sphinx 的分支。该包为使用 Sphinx 全文搜索引擎Laravel Scout 提供高级的搜索和过滤数据功能。

安装

Composer

使用以下命令通过 Composer 安装此包:

composer require constantable/laravel-scout-sphinx

配置

使用 vendor:publish Artisan 命令发布 Scout 配置。

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

此命令会将 scout.php 配置文件发布到您的配置目录,您可以在该目录中编辑并设置 sphinxsearch 作为 Scout 驱动器。

'driver' => env('SCOUT_DRIVER', 'sphinxsearch'),

要配置连接到 Sphinx 服务器,请添加以下(即默认)连接选项。

    'sphinxsearch' => [
        'host' => env('SPHINX_HOST', 'localhost'),
        'port' => env('SPHINX_PORT', '9306'),
        'socket' => env('SPHINX_SOCKET'),
        'charset' => env('SPHINX_CHARSET'),
    ],

如果需要,请在使用 .env 文件中覆盖这些变量。

用法

  • Laravel\Scout\Searchable 特性添加到您希望使其可搜索的模型中。
  • 自定义模型的索引名称和可搜索数据
    public function searchableAs()
    {
        return 'posts_index';
    }
    
    public function toSearchableArray()
    {
        $array = $this->toArray();

        // Customize array...

        return $array;
    }

基本搜索

$orders = App\Order::search('Star Trek')->get();

请参阅 Scout 文档 获取更多信息。您可以通过使用回调、设置 where 子句、orderBypaginate 阈值在索引上运行更复杂的查询。例如

$orders = App\Order::search($keyword, function (SphinxQL $query) {
        return $query->groupBy('description');
    })            
    ->where('status', 1)
    ->orderBy('date', 'DESC')
    ->paginate(20);

注意:仅允许对 RT(实时)索引进行 Sphinx 索引的更改。如果您有这些索引并且需要更新/删除记录,请在模型的属性中定义 public $isRT = true;

鸣谢

许可证

在 MIT 许可证下授权