Se hai bisogno di calcolare la somiglianza del testo su about
campo, un modo per raggiungere questo obiettivo è utilizzare indice di testo
.
Ad esempio (in mongo
shell), se crei un indice di testo su about
campo:
db.collection.createIndex({about: 'text'})
potresti eseguire una query come (esempio tratto da 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 i tuoi documenti di esempio, la query dovrebbe restituire qualcosa del tipo:
{
"_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
}
ordinati in base al punteggio di somiglianza decrescente. Tieni presente che, a differenza del risultato del tuo esempio, document foobar4
non viene restituito perché nessuna delle parole richieste è presente in foobar4
.
Gli indici di testo sono considerati un tipo speciale di indice in MongoDB e quindi vengono forniti con alcune regole specifiche sul suo utilizzo. Per maggiori dettagli, vedere: