typeorm mongo全文搜索排序相关

问题描述

我正在使用typeorm在mongodb上进行连接, Typeorm是否支持对全文搜索mongodb返回的相关分数进行排序 来自mongo,我想查询为:

db.todos.find( {$text: { $search: "coffee" }},{score: { "$Meta": "textscore" }}) .sort({score: { "$Meta": "textscore" }}) .limit(20);

如何从typeorm的MongoRepository中查询? 谢谢。

解决方法

我已经测试了以下代码,并且可以正常工作:

await todoRepository.find({
  where: {
    $text: { $search: 'search query here' },},take: 20
});

P.S。您需要确保在Todo集合中的字段上具有文本索引。

我不确定TypeORM是否按score进行排序。到目前为止,我还没有成功。

,

首先,我建议您查看Find Options docs以获得更多信息。

按一个或多个值对结果进行排序非常简单。

在下面的代码片段中尝试重现您的问题:

*(arr + 4)

正如您在“查找选项”对象中看到的那样,我添加了一个 sort 子句,在该子句中,我按 score 的顺序以ASC顺序对结果进行排序。