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: