As duas opções de índice são muito diferentes.
-
Quando você cria um índice regular em um campo de string, ele indexa o valor inteiro na string. Principalmente útil para cadeias de palavras únicas (como um nome de usuário para logins) onde você pode corresponder exatamente.
-
Um índice de texto, por outro lado, tokenizará e conterá o conteúdo do campo. Portanto, ele quebrará a string em palavras ou tokens individuais e os reduzirá ainda mais aos seus radicais para que as variantes da mesma palavra correspondam ("talk" correspondendo a "talks", "talked" e "talking", por exemplo, como "talk" é uma haste de todos os três). Principalmente útil para texto verdadeiro (frases, parágrafos, etc).
Pesquisa de texto
A pesquisa de texto suporta a pesquisa de conteúdo de string em documentos de uma coleção. O MongoDB fornece o$text
operador para realizar pesquisas de texto em consultas e em pipelines de agregação.
O processo de pesquisa de texto:
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.
O$text
operador pode pesquisar palavras e frases. A consulta corresponde às palavras derivadas completas. Por exemplo, se um campo de documento contiver a palavra blueberry, uma pesquisa pelo termo blue não corresponderá ao documento. No entanto, uma pesquisa por mirtilo ou mirtilo corresponderá.
-
$regex
pesquisas podem ser usadas com índices regulares em campos de string, para fornecer alguma correspondência de padrões e pesquisa de curingas. Não é um usuário muito eficaz de índices, mas usará índices onde puder:
Se existir um índice para o campo, o MongoDB fará a correspondência da expressão regular com os valores no índice, o que pode ser mais rápido do que uma varredura de coleção. Uma otimização adicional pode ocorrer se a expressão regular for uma “expressão de prefixo”, o que significa que todas as correspondências em potencial começam com a mesma string. Isso permite que o MongoDB construa um “intervalo” a partir desse prefixo e apenas corresponda aos valores do índice que se enquadram nesse intervalo.
http://docs.mongodb.org/manual/core/index-text/
http://docs.mongodb.org/manual/reference/operator/query/regex/