MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Wie finde ich Ähnlichkeiten im Dokumentfeld MongoDB?

Wenn Sie die Textähnlichkeit für about berechnen müssen Feld ist eine Möglichkeit, dies zu erreichen, die Verwendung von Textindex .

Zum Beispiel (im mongo Shell), wenn Sie einen Textindex auf about erstellen Feld:

db.collection.createIndex({about: 'text'})

Sie könnten eine Abfrage ausführen wie (Beispiel aus 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'}})

Bei Ihren Beispieldokumenten sollte die Abfrage etwa Folgendes zurückgeben:

{
  "_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 nach absteigendem Ähnlichkeitswert sortiert sind. Bitte beachten Sie, dass im Gegensatz zu Ihrem Beispielergebnis foobar4 dokumentiert wird wird nicht zurückgegeben, da keines der abgefragten Wörter in foobar4 vorhanden ist .

Textindizes gelten in MongoDB als besonderer Indextyp und enthalten daher einige spezifische Regeln für seine Verwendung. Weitere Einzelheiten finden Sie unter: