MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como encontrar similaridade no campo de documento MongoDB?


Se você precisar calcular a similaridade de texto no about campo, uma maneira de conseguir isso é usar o índice de texto .

Por exemplo (no mongo shell), se você criar um índice de texto no about campo:
db.collection.createIndex({about: 'text'})

você pode executar uma consulta como (exemplo retirado 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'}})

Com seus documentos de exemplo, a consulta deve retornar 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 são classificados por pontuação de similaridade decrescente. Observe que, diferentemente do resultado do seu exemplo, o documento foobar4 não é retornado porque nenhuma das palavras consultadas está presente em foobar4 .

Índices de texto são considerados um tipo especial de índice no MongoDB e, portanto, vêm com algumas regras específicas sobre seu uso. Para mais detalhes, consulte: