Jeśli chcesz obliczyć podobieństwo tekstu w about
jednym ze sposobów na osiągnięcie tego jest użycie indeksu tekstowego
.
Na przykład (w mongo
powłoki), jeśli utworzysz indeks tekstowy w about
pole:
db.collection.createIndex({about: 'text'})
możesz wykonać zapytanie, takie jak (przykład zaczerpnięty 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'}})
W przykładowych dokumentach zapytanie powinno zwrócić coś takiego:
{
"_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
}
które są sortowane według malejącego wyniku podobieństwa. Pamiętaj, że w przeciwieństwie do przykładowego wyniku, dokument foobar4
nie jest zwracany, ponieważ żadne z zapytanych słów nie występuje w foobar4
.
Indeksy tekstowe są uważane za specjalny typ indeksu w MongoDB, a zatem mają określone zasady dotyczące jego użycia. Aby uzyskać więcej informacji, zobacz: