mysql - cakephp 在具有多个搜索关键字的单列上查询 find_in_set 不起作用

标签 mysql cakephp-3.x

我想从列中查找与列数据有任何关键字匹配的所有记录:

如果在具有逗号分隔值的列中搜索单个搜索关键字,则效果很好,如下代码:Cakephp 3.4 版本

$posts = TableRegistry::get('Posts');
                $search_keywords = array_filter(explode(' ', $search_string));
                $option = [
                      'contain' => false,
                      'conditions' => [
                        "find_in_set('New', Posts.title)",
                      ],
                      'order' => ['Posts.created DESC'] 
                  ];
        $allpost = $posts->find('all',$option)->toArray();

注意:我希望字符串中的所有单词都应该使用列标题进行搜索,不强制要求有逗号分隔的记录:

$search_keyword = "New car in new delhi";

所以我希望代码如下:

$search_keyword = "New car in new delhi";
$search_keywords = array_filter(explode(' ', $search_string));
                $option = [
                      'contain' => false,
                      'conditions' => [
                        "find_in_set({$search_keywords}, `Posts`.title)",
                      ],
                      'order' => ['Posts.created DESC'] 
                  ];
        $allpost = $posts->find('all',$option)->toArray();

非常感谢!

最佳答案

我找到了解决方案:

首先创建列全文索引,然后添加以下代码:

$search_string = "New car in new delhi";
$option = [
                      'contain' => false,
                      'conditions' => [
                        "MATCH (title) AGAINST ('$search_string')"
                      ],
                      'order' => ['Posts.created DESC'] 
                  ];
        $allpost = $posts->find('all',$option)->toArray();

关于mysql - cakephp 在具有多个搜索关键字的单列上查询 find_in_set 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45387923/

相关文章:

mysql - 需要查询两个字段的不同组合,以及出现不同组合的计数

mysql - 尝试在 tomcat 7 上安装 HikariCP 并在启动时获取 javax.naming.NamingException

unit-testing - Cakephp 3 - 单元测试验证默认

php - 在插件元素 CakePHP 3 中获取当前插件名称

cakephp - 在 cakephp 中使用 SQL 函数返回错误

php - 如何匹配与一组特定的其他记录关联的记录?

mysql - 索引大型 MySQL 表

mysql - 插入多行,LAST_INSERT_ID 返回 1

mysql - 什么是最好的 query_cache_size/Ram 比率

php - 如何更改 JSON 请求 Cakephp 3 的错误响应结构