2017-09-18 10 views
3

検索方法の後にwhere()ステートメントを使用すると、numericFilterが使用されます。文字列フィルタリングで検索結果をフィルタリングしようとしています。Laravel Scoutでファセットフィルタを検索する?

検索クエリでファセットフィルタを使用するにはどうすればよいですか?

答えて

7

私自身の問題にはうれしいです。まず第一に、Laravel Scoutについての文書を見つけるのは本当に難しいです。文字列パラメータで検索結果をフィルタリングする場合。あまりにも答えを見つけることは本当に難しいです。私はライブラリー全体をラインごとにチェックしました。最後に、結果は私を誇りに思いました。

あなたは文字列パラメータを使用して結果をフィルタリングする場合は、あなたのsearch()メソッドにコールバック関数を設計し、there.Simply上ごFacetFiltersを注入し、あなたはあなたがAlgoliaを使用しているPostsモデルを持っていて、列挙型を持っていると仮定しましょうする必要がありますその上に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)); 
}); 
+0

あなたの努力に感謝します!これは本当に私を助けました。ちょうど私がまたこれに関するドキュメンテーションを見つけたと言いたいと思います。 https://www.algolia.com/doc/api-client/laravel/extending-scout/ –

+0

また、algoliaによってマクロ用に管理されているパッケージもあります。 https://github.com/algolia/laravel-scout-algolia-macros –

関連する問題