【问题标题】:Laravel Scout Search with FacetFilters?使用 FacetFilters 进行 Laravel Scout 搜索?
【发布时间】:2017-09-18 17:57:43
【问题描述】:

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

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

【问题讨论】:

    标签: php laravel algolia laravel-scout


    【解决方案1】:

    我很高兴回答我自己的问题。首先,已经很难找到任何关于 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));
    });
    

    【讨论】:

    【解决方案2】:

    根据 algolia 文档,您可以像这样修改搜索参数:

    $results = Product::search($q)->with(
        [
            'facets' => ['*'],
            'facetFilters' => [$facetFilters],
        ]
    )->paginate(24);
    

    https://www.algolia.com/doc/framework-integration/laravel/searching/server-side-search/

    【讨论】:

      猜你喜欢
      • 2019-06-15
      • 1970-01-01
      • 2019-04-03
      • 1970-01-01
      • 1970-01-01
      • 2018-12-12
      • 2019-11-23
      • 2017-04-30
      • 1970-01-01
      相关资源
      最近更新 更多