sql >> Databáze >  >> NoSQL >> MongoDB

Jak najít podobnost v poli dokumentu MongoDB?

Pokud potřebujete vypočítat podobnost textu na about Jedním ze způsobů, jak toho dosáhnout, je použít textový index .

Například (v mongo shell), pokud vytvoříte textový index na about pole:

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

můžete provést dotaz, jako je (příklad převzat z 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'}})

U vašich vzorových dokumentů by měl dotaz vrátit něco jako:

{
  "_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
}

které jsou seřazeny podle klesajícího skóre podobnosti. Upozorňujeme, že na rozdíl od výsledku vašeho příkladu dokument foobar4 není vráceno, protože žádné z dotazovaných slov není přítomno v foobar4 .

Textové indexy jsou v MongoDB považovány za speciální typ indexu, a proto přicházejí s některými specifickými pravidly pro jeho použití. Další podrobnosti naleznete na adrese:




  1. Používáte generátory aktivních záznamů po instalaci Mongoidu?

  2. Zamyká MongoDB MapReduce databázi

  3. Express JS Zobrazení dat podle ID

  4. Zabraňte Spring Data pro Mongo převést ID na ObjectId