默认情况下, Nova 通过资源的数据库列来搜索你的资源。 然而,这样可能是低效的,同时无法很好的支持「真实」搜索引擎的强大模糊匹配功能。
因此,Nova 与 Laravel Scout 无缝集成。当 Laravel\Scout\Searchable 特性被附加到与 Nova 资源相关的模型时,Nova 将在对该资源进行搜索时自动开始使用 Scout。无需其他配置。
如果你想在Laravel\Scout\Builder 实例对搜索引擎执行搜索查询之前调用它的方法,你可以覆盖资源上的 scoutQuery 方法:
use Laravel\Nova\Http\Requests\NovaRequest;
/**
* 为给定资源建立 Scout 搜索查询。
*
* @param \Laravel\Nova\Http\Requests\NovaRequest $request
* @param \Laravel\Scout\Builder $query
* @return \Laravel\Scout\Builder
*/
public static function scoutQuery(NovaRequest $request, $query)
{
return $query;
}通过在与 Scout 可搜索模型相关联的资源类上定义 scoutSearchResults 属性,可以自定义从 Scout 搜索引擎返回的搜索结果数量:
/**
* 使用 Scout 搜索资源时要显示的结果数量。
*
* @var int
*/
public static $scoutSearchResults = 200;你可以通过在资源类上定义一个 usesScout 方法来禁用对特定资源的 Scout 搜索支持。禁用 Scout 搜索支持后,即使相关资源模型包含 Scout Searchable 特质,也会使用简单的数据库查询来搜索给定资源:
/**
* 确定该资源是否使用 Laravel Scout。
*
* @return bool
*/
public static function usesScout()
{
return false;
}