使用FacetFilters进行Laravel Scout搜索?

bl4*_*sta 5 php laravel algolia laravel-scout

如您所知,where()在搜索方法使用后使用语句numericFilter.我试图用字符串过滤过滤我的搜索结果.

如何在搜索语句中使用Facet Filter?

bl4*_*sta 12

我很乐意回答我自己的问题.首先,很难找到任何有关Laravel Scout的文档.如果要使用字符串参数过滤搜索结果.即使很难找到答案也是如此.我逐行检查了整个图书馆.最后,结果让我感到自豪.

如果你想用字符串参数过滤你的结果,你需要为你的search()方法设计回调函数并在那里注入你的FacetFilters.简单地说,假设你有Posts模型你正在使用Algolia并且你有枚举类型category列.您可以使用以下代码过滤博客搜索结果.

$post = Post::search($query, function ($algolia, $query, $options) use ($category){
    $new_options = [];
    if (!is_null($type)) {
        $new_options = ["facetFilters"=>"category_name:".$category];
    }
    return $algolia->search($query, array_merge($options,$new_options));
});
Run Code Online (Sandbox Code Playgroud)

  • 感谢你的努力工作!这对我很有帮助.只是想说我也找到了关于此的文档.https://www.algolia.com/doc/api-client/laravel/extending-scout/ (2认同)
  • algolia还为宏保存了一个包.https://github.com/algolia/laravel-scout-algolia-macros (2认同)