MongoDB + Doctrine:如何按文本搜索分数

时间:2015-05-28 16:19:09

标签: php mongodb doctrine full-text-search

我有一个像这样的代码,按文本索引搜索:

$expr = $queryBuilder->expr()->operator('$text', ['$search' => $this->value]);
$result = $queryBuilder->equals($expr)->getQuery()->execute();

但结果并没有根据我想要的相关性进行排序。

我发现了一些信息here,但无法弄清楚如何使用Doctrine为搜索结果添加字段得分。

我想从那里添加就很容易了:

$queryBuilder->sort('score');

1 个答案:

答案 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();