constantable/laravel-scout-sphinx

Laravel Scout Sphinx 驱动程序

3.0 2023-09-11 21:11 UTC

This package is auto-updated.

Last update: 2024-09-11 23:33:53 UTC


README

介绍

此软件包是 constantable/laravel-scout-sphinx 的分支。该软件包为使用 Sphinx 全文搜索服务器Laravel Scout 进行数据搜索和过滤提供了高级功能。

安装

Composer

使用以下命令通过 Composer 安装此软件包。

composer require constantable/laravel-scout-sphinx

配置

使用 Artisan 命令 vendor:publish 发布 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 许可证许可