xcalder / laravel-scout-xunsearch
为 Laravel Scout 的 Xunsearch 驱动程序。
v1.1.1
2020-12-13 11:33 UTC
Requires
- php: >=5.6.4
- laravel/scout: >=7.0
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)。