热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mysql–如何在Symfony2数据库查询中使用MATCH

我正在为我的Symfony2项目构建一个搜索功能,我为它编写了SQL,如下所示:SELECTdlc.title,dlc.description,dlc.keywordsFROMSh

我正在为我的Symfony2项目构建一个搜索功能,我为它编写了SQL,如下所示:

SELECT dlc.title, dlc.description, dlc.keywords
FROM ShoutMainBundle:Dlc dlc
WHERE MATCH (dlc.title, dlc.description, dlc.keywords) AGAINST (":keyword" IN BOOLEAN MODE)
AND dlc.type = (":audio")
ORDER BY dlc.date DESC

但是,当我在项目中运行它时,会给出以下错误:


[Syntax Error] line 0, col 96: Error: Expected known function, got
‘MATCH’


有没有替代MATCH的替代方案?目前(正好我可以进行基本测试)我正在使用LIKE,但如果使用多个单词进行搜索,则效果不佳.

编辑:
这是代码在代码中的使用方式:

$em = $this->getDoctrine()->getEntityManager();
$wckeyword = '%'.$skeyword.'%';
$dlcresult = $em->createQuery('
SELECT dlc.title, dlc.description, dlc.keywords
FROM ShoutMainBundle:Dlc dlc
WHERE MATCH (dlc.title, dlc.description, dlc.keywords) AGAINST (":keyword" IN BOOLEAN MODE)
AND dlc.type = (":audio")
ORDER BY dlc.date DESC'
)->setParameters(array('type' => $stype, 'keyword' => $wckeyword));
$dlcres = $dlcresult->getResult();

解决方法:

Doctrine2 ORM目前无法实现这一目标.由于Doctrine支持许多不同的数据库供应商,并且大多数供应商没有FULLTEXT搜索功能,因此根本不受支持.

您始终可以使用Doctrine2 DBAL进行搜索.你失去了所有这些漂亮的orm功能,但在我的实践中,它们并不是搜索情况所需要的.


推荐阅读
author-avatar
陈初刚5689
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有