我有这个用户集合:
{
"_id" : ObjectId("501faa18a34feb05890004f2"),
"username" : "joanarocha",
}
{
"_id" : ObjectId("501faa19a34feb05890005d3"),
"username" : "cristianarodrigues",
}
{
"_id" : ObjectId("501faa19a34feb05890006d8"),
"username" : "anarocha",
}
当我查询时: db.users.find({'username': /anaro/i}) 结果按自然顺序排序(插入顺序) .
我想用相似性搜索术语顺序对它们进行排序 . 在这种情况下,结果应该按此顺序返回:
{
“_id”:ObjectId(“501faa19a34feb05890006d8”),
“用户名”:“anarocha”,
}
{
“_id”:ObjectId(“501faa18a34feb05890004f2”),
“username”:“joanarocha”,
}
{
“_id”:ObjectId(“501faa19a34feb05890005d3”),
“用户名”:“cristianarodrigues”,
}
1 回答
不幸的是,默认情况下,MongoDB不支持全文搜索排名 .
首先,您需要一种算法来计算字符串之间的相似性 . 请参阅以下链接:
String similarity algorithims?
String similarity -> Levenshtein distance
然后你需要使用算法编写javascript function来比较两个字符串以在查询中传递它 . 请参阅以下链接以了解如何实现:
Mongo complex sorting?