MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come trovare la somiglianza nel campo del documento MongoDB?

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: