Si necesita calcular la similitud del texto en about
campo, una forma de lograr esto es usar índice de texto
.
Por ejemplo (en el mongo
shell), si crea un índice de texto en about
campo:
db.collection.createIndex({about: 'text'})
podría ejecutar una consulta como (ejemplo tomado de 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'}})
Con sus documentos de ejemplo, la consulta debería devolver algo como:
{
"_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
}
que se ordenan por puntuación de similitud decreciente. Tenga en cuenta que, a diferencia del resultado de su ejemplo, el documento foobar4
no se devuelve porque ninguna de las palabras consultadas está presente en foobar4
.
Los índices de texto se consideran un tipo especial de índice en MongoDB y, por lo tanto, vienen con algunas reglas específicas sobre su uso. Para obtener más detalles, consulte: