Sub*_*nna 1 laravel laravel-scout meilisearch
我正在尝试在我的 Laravel 应用程序上实现 Meilisearch。
由于某种原因,我无法使用、、和运算符过滤decimal字段(price等mrp),如Meilisearch 文档中所述。>>=<<=
Product::search($request->search, function ($meilisearch, $query, $options) {
$options['filter'] = 'price >= 1'; // This is the line that causes the issue.
return $meilisearch->search($query, $options);
})->raw();
Run Code Online (Sandbox Code Playgroud)
如果我执行类似上面的操作,我会得到 0 次点击,尽管有很多记录满足该条件 ( price >= 1):
我不确定我做错了什么。
另外,我想学习,如何应用多个 Fitters。就像在实际场景中一样。我们需要按最低和最高价格过滤产品。我意识到 Laravel scout 不允许我们使用where('price', '>=', $request->min_price)像 eloquent 这样的高级 where 子句 ( )
我想使用Scout和Meilisearch来做这样的事情 。
$query = Product::search($request->search);
if ($request->min_price) {
$query->where('price', '>=', $request->min_price);
}
if ($request->max_price) {
$query->where('price', '<=', $request->max_price);
}
Run Code Online (Sandbox Code Playgroud)
我们目前使用的一种黑客方法是将操作员放入该字段中:
$query = Product::search($request->search);
if ($request->min_price) {
$query->where('price >', $request->min_price);
}
if ($request->max_price) {
$query->where('price <', $request->max_price);
}
Run Code Online (Sandbox Code Playgroud)
这样,Scout 就可以创建正确的(例如price >= {min_price})表达式。但请注意,这只是解决方法,并不一定适用于 Scout 支持的其他搜索引擎。
请观看 Scout 的 Meilisearch 驱动程序以了解其工作原理:https://github.com/laravel/scout/blob/9.x/src/Engines/MeiliSearchEngine.php#L163-L188
| 归档时间: |
|
| 查看次数: |
1221 次 |
| 最近记录: |