【问题标题】:How To Use MATCH In Symfony2 Database Query如何在 Symfony2 数据库查询中使用 MATCH
【发布时间】:2011-11-14 09:27:39
【问题描述】:

我正在为我的 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

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

[语法错误] line 0, col 96: Error: Expected known function, got '匹配'

我可以使用替代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();

【问题讨论】:

标签: mysql symfony doctrine-orm


【解决方案1】:

Doctrine 不支持这种开箱即用的方式,没错。但是你可以:

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-11
      • 2014-05-20
      • 2016-02-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多