Le due opzioni di indice sono molto diverse.
-
Quando crei un indice regolare su un campo stringa, indicizza l'intero valore nella stringa. Per lo più utile per stringhe di parole singole (come un nome utente per gli accessi) in cui puoi corrispondere esattamente.
-
Un indice di testo d'altra parte tokenizzerà e arginerà il contenuto del campo. Quindi spezzerà la stringa in singole parole o simboli, e li ridurrà ulteriormente alle loro radici in modo che le varianti della stessa parola corrispondano ("parlano" corrispondono a "parla", "parla" e "parla" ad esempio, come "parla" è una radice di tutti e tre). Per lo più utile per il vero testo (frasi, paragrafi, ecc.).
Ricerca di testo
La ricerca di testo supporta la ricerca di contenuti di stringhe nei documenti di una raccolta. MongoDB fornisce il
$text
operatore per eseguire ricerche di testo nelle query e nelle pipeline di aggregazione.Il processo di ricerca del testo:
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.
Il
$text
l'operatore può cercare parole e frasi. La query corrisponde alle parole derivate complete. Ad esempio, se un campo del documento contiene la parola mirtillo, una ricerca sul termine blu non corrisponderà al documento. Tuttavia, una ricerca su mirtillo o mirtillo corrisponderà. -
$regex
le ricerche possono essere utilizzate con indici regolari su campi stringa, per fornire una corrispondenza di modelli e ricerche con caratteri jolly. Non è un utente terribilmente efficace di indici, ma utilizzerà gli indici dove può:Se esiste un indice per il campo, MongoDB confronta l'espressione regolare con i valori nell'indice, il che può essere più veloce della scansione di una raccolta. Un'ulteriore ottimizzazione può verificarsi se l'espressione regolare è una "espressione di prefisso", il che significa che tutte le potenziali corrispondenze iniziano con la stessa stringa. Ciò consente a MongoDB di costruire un "intervallo" da quel prefisso e di confrontare solo i valori dell'indice che rientrano in quell'intervallo.
http://docs.mongodb.org/manual/core/index-text/
http://docs.mongodb.org/manual/reference/operator/query/regex/