2011-11-14 34 views
2

我建立一个搜索功能为我的Symfony2项目,我写的SQL它如下:如何使用匹配的Symfony2数据库查询

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(); 
+1

你在使用打电话给你的疑问?请发布你如何查询MySQL服务器的代码示例。 – gilden

+0

刚刚编辑我的问题与它 – mickburkejnr

+0

也许这将帮助http://stackoverflow.com/questions/4238814/problem-with-match-against-in-doctrine – tawfekov

回答

1

这是目前不可能与Doctrine2 ORM。由于Doctrine支持许多不同的数据库供应商,并且其中大多数没有FULLTEXT搜索功能,所以根本不支持它。

您可以随时使用进行搜索。你失去了所有这些漂亮的orm特征,但是在我的练习中,它们在搜索情况中并不是那么需要。