Om du behöver beräkna textlikhet på about
ett sätt att uppnå detta är att använda textindex
.
Till exempel (i mongo
skal), om du skapar ett textindex på about
fält:
db.collection.createIndex({about: 'text'})
du kan köra en fråga som (exempel taget från 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'}})
Med dina exempeldokument bör frågan returnera något i stil med:
{
"_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
}
som sorteras efter minskande likhetspoäng. Observera att till skillnad från ditt exempelresultat, dokument foobar4
returneras inte eftersom inget av de sökta orden finns i foobar4
.
Textindex anses vara en speciell typ av index i MongoDB, och kommer därför med några specifika regler för dess användning. För mer information, se: