我有一个像这样的代码,按文本索引搜索:
$expr = $queryBuilder->expr()->operator('$text', ['$search' => $this->value]);
$result = $queryBuilder->equals($expr)->getQuery()->execute();
但结果并没有根据我想要的相关性进行排序。
我发现了一些信息here,但无法弄清楚如何使用Doctrine为搜索结果添加字段得分。
我想从那里添加就很容易了:
$queryBuilder->sort('score');
答案 0 :(得分:2)
我找不到相关文档,但我确实在项目的Github repo上找到了this issue。该问题具有1.2.0版本的里程碑,但它似乎已经在1.1.x分支中发布。该问题已通过this commit关闭。
从提交中,您似乎需要通过 textScore 元数据信息对结果进行排序,这是对查询构建器的一个额外方法调用:
$result = $queryBuilder
->equals($expr)
->sortMeta('fieldToSearch', 'textScore') // <- this
->getQuery()
->execute();