sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Cómo encontrar similitud en el campo de documento MongoDB?

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: