Ако трябва да изчислите сходството на текста на about поле, един от начините да постигнете това е да използвате текстов индекс
.
Например (в mongo shell), ако създадете текстов индекс на about поле:
db.collection.createIndex({about: 'text'})
можете да изпълните заявка като (пример, взет от https://docs.mongodb.com/manual/reference/operator/query/text/#sort-by-text-search-score ):
db.collection.find({$text: {$search: 'similarity in comparison'}}, {score: {$meta: 'textScore'}}).sort({score: {$meta: 'textScore'}})
С вашите примерни документи заявката трябва да върне нещо като:
{
"_id": "foobar1",
"about": "similarity in comparison",
"score": 1.5
}
{
"_id": "foobar2",
"about": "perfect similarity in comparison",
"score": 1.3333333333333333
}
{
"_id": "foobar3",
"about": "partial similarity",
"score": 0.75
}
които са сортирани по низходящ резултат за сходство. Моля, имайте предвид, че за разлика от вашия примерен резултат, документ foobar4 не се връща, защото нито една от заявените думи не присъства в foobar4 .
Текстовите индекси се считат за специален тип индекси в MongoDB и следователно идват с някои специфични правила за тяхното използване. За повече подробности, моля, вижте: