laravel mysql搜索允许用户进行自定义布尔搜索

rn0zuynd  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(251)

我有这个新的要求,从客户的员工管理项目,我正在做,让他们的用户做自定义布尔搜索。
基本上允许他们使用:and,or,not,方括号和引号。
实现这一点的最佳方法是什么?我已经 checkout 了mysql,它们使用不同的语法。
这是测试场景:
要求:搜索具有精英或老兵级别的来自新加坡的魔术师或野蛮人
布尔字符串:(“魔术师”或“野蛮人”)和(精英或“老兵级”)和新加坡人
这是我将考虑修改的代码之一,我从纯基于php的布尔字符串搜索中获得

function booleanSearch($content, $search) {
    $criteria = str_getcsv($search, ' ');

    while ($criteria) {
        $not = false;
        $q = array_shift($criteria);

        if (substr($q, 0, 2) === '-"') {
            $not = true;

            while (substr($q, -1) != '"') {
                $q .= " " . array_shift($criteria);
            }

            $q = substr($q, 2, -1);
        }
        else if (substr($q, 0, 1) === '-' && strpos($q, ' ') === false) {
            $not = true;
            $q = substr($q, 1);
        }

        $found = strpos($content, $q) !== false;

        if ($found === $not) {
            return false;
        }
    }

    return true;
}
3zwtqj6y

3zwtqj6y1#

您只需要一个查询生成器实现。根据你的描述,推出自己的产品是微不足道的,否则,有很多软件包可以让生活更轻松。Spatiale的查询生成器运行良好:https://github.com/spatie/laravel-query-builder

相关问题