【问题标题】:How to optimize search functionality in laravel?如何优化 laravel 中的搜索功能?
【发布时间】:2020-11-29 03:11:51
【问题描述】:

我在使用搜索功能时遇到了我的 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”/“prooductt”等关键字搜索[打算显示“演示产品”],如何获得搜索查询结果。如果可以的话,请给我一些建议。提前谢谢:)

【问题讨论】:

标签: php sql laravel search


【解决方案1】:

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

要在 Laravel Eloquent 中实际使用索引,您需要使用原始查询。

User::whereRaw("MATCH(product_name)AGAINST('soccer' IN BOOLEAN MODE)")
    ->limit(10)
    ->get();

为了使语法更好一点,您可以为您的 Product 模型添加一个范围。

public function scopeNameMatches($query, $searchTerm)
{
    return $query-> whereRaw("MATCH(product_name)AGAINST(? IN BOOLEAN MODE)", $searchTerm);
}

您可以通过以下方式调用作用域来使用它。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-11
    • 2018-12-25
    • 1970-01-01
    相关资源
    最近更新 更多