Php 如何优化laravel中的搜索功能?

Php 如何优化laravel中的搜索功能?,php,sql,laravel,search,Php,Sql,Laravel,Search,使用搜索功能时,我的laravel应用程序遇到问题。 这是我的搜索功能代码 use DB; public function search(Request $request){ $query = $request->input('query'); $products = DB::table('products') ->where('product_title','like','%'.$query.'%')

使用搜索功能时,我的laravel应用程序遇到问题。 这是我的搜索功能代码

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”/“ProProductt”等关键字[打算显示“演示产品”]进行搜索,如何获得搜索查询结果。如果可以,请给我一些建议。提前感谢:)

您需要在所选数据库中使用全文搜索索引。您可以阅读有关MySQL全文索引的更多信息

要将索引与Laravels一起使用,您需要使用原始查询

User::whereRaw("MATCH(product_name)AGAINST('soccer' IN BOOLEAN MODE)")
    ->limit(10)
    ->get();
为了使语法更简洁,您可以在产品模型中添加一个作用域

public function scopeNameMatches($query, $searchTerm)
{
    return $query-> whereRaw("MATCH(product_name)AGAINST(? IN BOOLEAN MODE)", $searchTerm);
}
您可以通过以下方式调用作用域来使用它

Product::nameMatches("soccer")->get();

您需要在所选数据库中使用全文搜索索引。您可以阅读有关MySQL全文索引的更多信息

要将索引与Laravels一起使用,您需要使用原始查询

User::whereRaw("MATCH(product_name)AGAINST('soccer' IN BOOLEAN MODE)")
    ->limit(10)
    ->get();
为了使语法更简洁,您可以在产品模型中添加一个作用域

public function scopeNameMatches($query, $searchTerm)
{
    return $query-> whereRaw("MATCH(product_name)AGAINST(? IN BOOLEAN MODE)", $searchTerm);
}
您可以通过以下方式调用作用域来使用它

Product::nameMatches("soccer")->get();
看一看这个:或者拉威尔侦察员可能看一看这个:或者拉威尔侦察员可能看一看