我写了一个DQL来找到一些结果,我希望它能返回最好的前10个结果,如何根据Doctrine中的相关性对结果进行排序?
$posts = $this->getEntityManager()
->createQuery('SELECT p FROM AcmeDemoBundle:Post p WHERE p.title LIKE :word')
->setParameter('word', '%' . $word . '%')
->setMaxResults(10)
->getResult();
答案 0 :(得分:0)
我认为这个问题与我的问题类似:
How to use Doctrine_RawSql for a fulltext search and sorting by relevance
所以,我明白了。
根据MySQL全文自然语言搜索文档:
当在WHERE子句中使用MATCH()时,如前面所示的示例,返回的行将首先自动排序,具有最高的相关性。相关性值是非负浮点数。零相关意味着没有相似性。相关性的计算基于行中的单词数,该行中唯一单词的数量,集合中单词的总数以及包含特定单词的文档(行)数。