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 はデフォルトでは全文検索ランキングをサポートしていません。

まず、文字列間の類似度を計算するアルゴリズムが必要です。次のリンクを参照してください。

文字列類似アルゴリズム?

文字列類似度 -> レーベンシュタイン距離

次に、アルゴリズムを使用してJavaScript 関数を記述し、2 つの文字列を比較してクエリに渡す必要があります。それを達成する方法については、次のリンクを参照してください。

Mongo 複雑な並べ替え?

于 2012-08-17T12:25:05.217 に答える