我尝试在我的 Symfony2 项目中设置此类:http: //xlab.pl/en/full-text-searching/(与部分匹配)
这个类应该允许我使用 Match 来对抗这样的学说:
$searchResult = $em->createQueryBuilder('uvaluo_user')
->addSelect("MATCH_AGAINST (uvaluo_user.firstname, uvaluo_user.lastname, :name 'IN NATURAL MODE') as score")
->add('where', 'MATCH_AGAINST (uvaluo_user.firstname, uvaluo_user.lastname, :name) > 0.8')
->setParameter('name', $name)
->getQuery()
->getResult();
正如他们在网站上所说,我把它放在我的应用程序的 config.yml 中:
orm:
auto_generate_proxy_classes: %kernel.debug%
auto_mapping: true
dql:
string_functions:
match_against: Uvaluo\UserBundle\Extension\Doctrine\MatchAgainstFunction
我有这样的类 MatchAgainstFunction
<?
namespace Uvaluo\UserBundle\Extension\Doctrine;
use Doctrine\ORM\Query\Lexer;
use Doctrine\ORM\Query\AST\Functions\FunctionNode;
/**
* @example by https://gist.github.com/1234419 Jérémy Hubert
* "MATCH_AGAINST" "(" {StateFieldPathExpression ","}* InParameter {Literal}? ")"
*/
class MatchAgainstFunction extends FunctionNode {
//Content that I got in the website
}
最后,当我尝试我的代码时,我收到以下错误:
[语义错误] 第 0 行,第 107 列“MATCH_AGAINST”附近:错误:未定义“MATCH_AGAINST”类。500 内部服务器错误 - QueryException 1 链接异常:QueryException »
你知道这可能是什么原因吗?