我是doctrine mongodb查询构建器的新手,并尝试将查询构建器和mongodb结合起来在php中进行全文搜索(Symfony 2.6) 首先,我已经索引了我要搜索的集合的字段。 然后,在我的行动中,我有以下查询:
$dm = $this->getDoctrineMongoDB()->getManager();
$qb = $dm->createQueryBuilder('MyBundle:MyCollection');
$expr = $qb->expr()->operator('$text', array(
'$search' => 'I love stackoverflow',
'$language' => 'none', // or one of those other languages
),
array('score' => array('$meta' => 'textScore'))
);
$qb->field(null)->equals($expr->getQuery());
$qb->sort(array('score' => array('$meta' => 'textScore')));
此查询返回所需的结果,但不会对它们进行排序。我的意思是它不会根据与查询匹配的每个文档的分数对结果进行排序。我已经浏览了mongoDb中的所有文本搜索和排序文档以及堆栈溢出答案 php mongodb full-text search and sort和MongoDB+Doctrine: How to sort the query by text search score但是没有一个帮助我修复此查询基于textScore的排序。我真的需要你的帮助,我的每一点帮助都将受到赞赏。
答案 0 :(得分:0)
幸运的是,我找到了问题的答案。我的学说mongodb很老,这就是为什么查询构建器无法识别方法sortMeta()所以我将doctrine / mongodb版本1.0升级到最后一个版本1.2.x-dev并且下面的代码来自此链接 MongoDB+Doctrine: How to sort the query by text search score就像魅力一样。