前提
Laravel6.x公式ドキュメントを参考に、
Laravel Scout Elasticsearchを利用し、指定したキーワードで検索することはできています。
// 商品をキーワード検索 $products = Product::search($keyword)->get();
キーワード以外に、例えば商品の価格帯やカテゴリIDといった条件も追加したいと考えています。
発生している問題
キーワードで絞り込んだ結果にwhereを追加することにより、さらに絞り込むことができるようですが、公式にもあるように基本的な数値の一致しかサポートしておらず、
例えば下記のような比較条件での絞り込みはできないようです。
// 商品をキーワード+最低価格以上で検索(サポートしていない) $products = Product::search($keyword)->where('price', '>=', $minPrice)->get();
Scoutは検索クエリに対して"WHERE"節を単に追加する方法も提供しています。現在、この節としてサポートしているのは、基本的な数値の一致を確認することだけで、主にIDにより検索クエリを絞り込むために使用します。検索インデックスはリレーショナル・データベースではないため、より上級の"WHERE"節は現在サポートしていません。
キーワード以外の複雑な条件(範囲検索、LIKE検索等)を追加したい場合、どのように実装するべきでしょうか?
補足情報(FW/ツールのバージョンなど)
Laravel 6.2
Laravel Scout 7.1
lotuashvili/laravel-scout-elastic-aws 4.2
Amazon Elasticsearch
PostgreSQL 10.4
あなたの回答
tips
プレビュー