Двете опции за индекс са много различни.
-
Когато създадете редовен индекс на поле за низ, той индексира цялата стойност в низа. Полезно предимно за низове от една дума (като потребителско име за влизане), където можете да съвпадате точно.
-
Текстов индекс от друга страна ще токенизира и ще ограничи съдържанието на полето. Така той ще разбие низа на отделни думи или токени и допълнително ще ги сведе до техните стъбла, така че вариантите на една и съща дума да съвпадат („говорим“ съвпадащи с „разговори“, „говорим“ и „говорим“ например като „говорим“ е стебло и на трите). Предимно полезно за истински текст (изречения, абзаци и т.н.).
Текстово търсене
Текстовото търсене поддържа търсенето на низово съдържание в документи за събиране. MongoDB предоставя
$text
оператор за извършване на текстово търсене в заявки и в тръбопроводи за агрегиране.Процесът на текстово търсене:
tokenizes and stems the search term(s) during both the index creation and the text command execution. assigns a score to each document that contains the search term in the indexed fields. The score determines the relevance of a document to a given search query.
$text
операторът може да търси думи и фрази. Заявката съвпада с пълните коренови думи. Например, ако полето на документа съдържа думата боровинка, търсенето на термина синьо няма да съответства на документа. Въпреки това търсенето на боровинки или боровинки ще съвпада. -
$regex
търсенията могат да се използват с обикновени индекси на низови полета, за да се осигури съвпадение на шаблони и търсене с заместващи знаци. Не е много ефективен потребител на индекси, но ще използва индекси, където може:Ако за полето съществува индекс, тогава MongoDB съпоставя регулярния израз със стойностите в индекса, което може да бъде по-бързо от сканирането на колекция. По-нататъшна оптимизация може да възникне, ако регулярният израз е „префиксен израз“, което означава, че всички потенциални съвпадения започват с един и същ низ. Това позволява на MongoDB да конструира „диапазон“ от този префикс и да съвпада само с онези стойности от индекса, които попадат в този диапазон.
http://docs.mongodb.org/manual/core/index-text/
http://docs.mongodb.org/manual/reference/operator/query/regex/