Les deux options d'index sont très différentes.
-
Lorsque vous créez un index régulier sur un champ de chaîne, il indexe la valeur entière dans la chaîne. Surtout utile pour les chaînes de mots simples (comme un nom d'utilisateur pour les connexions) où vous pouvez faire correspondre exactement.
-
Un index de texte, d'autre part, marquera et enracinera le contenu du champ. Ainsi, il divisera la chaîne en mots individuels ou en jetons, et les réduira davantage à leurs racines afin que les variantes du même mot correspondent ("talk" correspondant à "talks", "talked" et "talking" par exemple, comme "talk" est une racine des trois). Surtout utile pour le vrai texte (phrases, paragraphes, etc.).
Recherche textuelle
La recherche de texte prend en charge la recherche de contenu de chaîne dans les documents d'une collection. MongoDB fournit le
$text
opérateur pour effectuer des recherches de texte dans les requêtes et dans les pipelines d'agrégation.Le processus de recherche de texte :
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.
Le
$text
l'opérateur peut rechercher des mots et des phrases. La requête correspond aux mots radicaux complets. Par exemple, si un champ de document contient le mot myrtille, une recherche sur le terme bleu ne correspondra pas au document. Cependant, une recherche sur myrtille ou myrtilles correspondra. -
$regex
les recherches peuvent être utilisées avec des index réguliers sur des champs de chaîne, pour fournir une correspondance de modèle et une recherche de caractères génériques. Ce n'est pas un utilisateur très efficace des index, mais il utilisera les index là où il le peut :Si un index existe pour le champ, MongoDB fait correspondre l'expression régulière aux valeurs de l'index, ce qui peut être plus rapide qu'une analyse de collection. Une optimisation supplémentaire peut se produire si l'expression régulière est une « expression de préfixe », ce qui signifie que toutes les correspondances potentielles commencent par la même chaîne. Cela permet à MongoDB de construire une "plage" à partir de ce préfixe et de ne faire correspondre que les valeurs de l'index qui se situent dans cette plage.
http://docs.mongodb.org/manual/core/index-text/
http://docs.mongodb.org/manual/reference/operator/query/regex/