4

我有这个用户集合:

{
    "_id" : ObjectId("501faa18a34feb05890004f2"),
    "username" : "joanarocha",
}
{
    "_id" : ObjectId("501faa19a34feb05890005d3"),
    "username" : "cristianarodrigues",
}
{
    "_id" : ObjectId("501faa19a34feb05890006d8"),
    "username" : "anarocha",
}

当我查询时:db.users.find({'username': /anaro/i})结果按自然顺序(插入顺序)排序。

我想按相似性搜索词顺序对它们进行排序。在这种情况下,结果应按以下顺序返回:

{
    "_id" : ObjectId("501faa19a34feb05890006d8"),
    "username" : "anarocha",
}
{
    "_id" : ObjectId("501faa18a34feb05890004f2"),
    "username" : "joanarocha",
}
{
    "_id" : ObjectId("501faa19a34feb05890005d3"),
    "username" : "cristianarodrigues",
}
4

1 回答 1

2

遗憾的是,MongoDB 默认不支持全文搜索排名。

首先,您需要一个算法来计算字符串之间的相似度。请参阅以下链接:

字符串相似度算法?

字符串相似度 -> Levenshtein 距离

然后,您需要使用该算法编写一个javascript 函数来比较两个字符串以将其传递到您的查询中。请参阅以下链接以了解如何实现这一目标:

Mongo复杂排序?

于 2012-08-17T12:25:05.217 回答