MongoMapper - 全文搜索

MongoMapper - Full Text Search

直接在数据库上使用这个命令我得到了我想要的结果

db.products.find({$text: {$search: "some product"}}, {score: {$meta: "textScore"}}).sort({score:{$meta:"textScore"}})

但是在 MongoMapper 中使用它时出现错误。 没有分数字段的搜索不会产生任何错误

@products = Product.where(
    '$text' => {'$search' => @search_string}
)

但是,当我尝试添加排序字段时遇到问题

@products = Product.where(
    '$text' => {'$search' => @search_string}, :score => {'$meta' => "textScore"}
)

Mongo::OperationFailure at /search unknown operator: $meta

使用原始查询方法也失败

@products = MongoMapper.database['products'].find(
    '$text' => {'$search' => @search_string}, :score => {'$meta' => "textScore"}
)

我正在尝试 运行 的完整查询是

 @products = Product.where(
    '$text' => {'$search' => @search_string},:score => {'$meta' => "textScore"}
).sort(:score => {'$meta' => "textScore"}).limit(5)

这给出了错误

Mongo::OperationFailure at /search must have $meta projection for all $meta sort keys

有人对我哪里出错有建议吗?我想我用错了。

已安装的版本。 mongo_mapper (0.14.0, 0.13.1)

MongoMapper Google 组的一位用户为我指出了正确的方向

@products = Product.where(
'$text' => {'$search' => @search_string}).fields(:score => {'$meta' => "textScore"})