Als u tekstovereenkomst moet berekenen op de about
veld, is een manier om dit te bereiken het gebruik van text index
.
Bijvoorbeeld (in de mongo
shell), als u een tekstindex maakt op de about
veld:
db.collection.createIndex({about: 'text'})
je zou een query kunnen uitvoeren zoals (voorbeeld genomen van 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'}})
Met uw voorbeelddocumenten zou de zoekopdracht iets moeten opleveren als:
{
"_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
}
die zijn gesorteerd op afnemende overeenkomstscore. Houd er rekening mee dat, in tegenstelling tot uw voorbeeldresultaat, document foobar4
wordt niet geretourneerd omdat geen van de opgevraagde woorden aanwezig is in foobar4
.
Tekstindexen worden beschouwd als een speciaal type index in MongoDB en komen dus met een aantal specifieke regels voor het gebruik ervan. Voor meer details, zie: