[英]How to optimize search functionality in laravel?
在使用搜索功能时,我的 laravel 应用程序遇到问题。 这是我的搜索代码 function
use DB;
public function search(Request $request){
$query = $request->input('query');
$products = DB::table('products')
->where('product_title','like','%'.$query.'%')
->get();
让我们想象一下我的应用程序中的产品标题为“演示产品”。 如果我打算使用 de/d/mo/pro 等关键字搜索产品,则没有问题。这些关键字显示了一些结果。 但是,如果我使用“deemoo”/“prooductt”等关键字搜索[打算显示“演示产品”],如何获得搜索查询结果。如果可以的话,请给我一些建议。提前谢谢:)
您需要在您选择的数据库中使用全文搜索索引。 您可以在此处阅读有关 MySQL 全文索引的更多信息。
要在 Laravel Eloquent 中实际使用索引,您需要使用原始查询。
User::whereRaw("MATCH(product_name)AGAINST('soccer' IN BOOLEAN MODE)")
->limit(10)
->get();
为了使语法更好一点,您可以将 scope 添加到您的产品 model 中。
public function scopeNameMatches($query, $searchTerm)
{
return $query-> whereRaw("MATCH(product_name)AGAINST(? IN BOOLEAN MODE)", $searchTerm);
}
您可以通过以下方式调用 scope 来使用它。
Product::nameMatches("soccer")->get();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.