xcalder/laravel-scout-xunsearch

为 Laravel Scout 的 Xunsearch 驱动程序。

v1.1.1 2020-12-13 11:33 UTC

This package is auto-updated.

Last update: 2024-09-13 19:40:40 UTC


README

Laravel Scout 的 Xunsearch 引擎。

安装

您可以通过 composer 安装此包

composer require xcalder/lumen-xunsearch

配置

通过编辑 config/scout.php 中的第 62 行来将配置文件发布到您的项目中

    'xunsearch' => [
        'index'  => env('XUNSEARCH_INDEX_HOST', '127.0.0.1:8383'),
        'search' => env('XUNSEARCH_SEARCH_HOST', '127.0.0.1:8384'),
        'schema' => [
            'article'=>app()->basePath()  .'/'. env('XUNSEARCH_SCHEMA_ARTICLE'),
            'special'=>app()->basePath()  .'/'. env('XUNSEARCH_SCHEMA_SPECIAL'),
            'forum'=>app()->basePath()  .'/'. env('XUNSEARCH_SCHEMA_FORUM')
        ]
    ],

.env 文件中添加 Xunsearch 设置

SCOUT_DRIVER=xunsearch
SCOUT_PREFIX=opx
XUNSEARCH_INDEX_HOST=127.0.0.1:8383
XUNSEARCH_SEARCH_HOST=127.0.0.1:8384
XUNSEARCH_SCHEMA_ARTICLE=config/xunsearch/article.ini
XUNSEARCH_SCHEMA_SPECIAL=config/xunsearch/special.ini
XUNSEARCH_SCHEMA_FORUM=config/xunsearch/forum.ini

使用方法

现在您可以使用 Laravel Scout,如官方文档所述

WHERE 子句

此引擎允许您添加更复杂的 "WHERE" 子句。

  • addRange
   $users = App\User::search('Star Trek')
            ->where('age', new \Scout\Xunsearch\Operators\RangeOperator(30,50))->get();
  • setCollapse
   $users = App\User::search('Star Trek')
            ->where('city', new \Scout\Xunsearch\Operators\CollapseOperator($num = 10))->get();
  • setFuzzy
   $users = App\Users::search('Star Trek')
           ->where('**', new \Scout\Xunsearch\Operators\FuzzyOperator($fuzzy = false))->get();
  • setFacets
   $users = App\Users::search('Star Trek')
            ->where('***', new \Scout\Xunsearch\Operators\FacetsOperator(array('age','city')))->get();
  • addWeight
   $users = App\User::search('Star Trek')
   ->where('country', new \Scout\Xunsearch\Operators\WeightOperator('US'))->get();

配置可搜索的数据

默认情况下,给定模型整个 toArray 形式的数据将被持久化到其搜索索引中。如果您想自定义同步到搜索索引的数据,您可以在模型上重写 toSearchableArray 方法

注意:如果是旧版本更新,将 config('scout.xunsearch.prefix') 改为 config('scout.prefix')

<?php

namespace App;

use Scout\Xunsearch\Searchable;
use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    use Searchable;

    /**
     * 获取模型的索引名称.
     * 加上前缀,为了多个项目索引共存
     *
     * @return string
     */
    public function searchableAs()
    {
        return config('scout.prefix').'_article';
    }

    /**
     * Get the indexable data array for the model.
     *
     * @return array
     */
    public function toSearchableArray()
    {
        $array = $this->toArray();

        // Customize array...

        return $array;
    }
}

##链接

鸣谢

许可证

MIT 许可证 (MIT)。