Ако трябва да изчислите сходството на текста на 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 и следователно идват с някои специфични правила за тяхното използване. За повече подробности, моля, вижте: