English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Dalla versione 2.4, MongoDB inizia a supportare l'indice di ricerca testuale per cercare il contenuto delle stringhe. La Ricerca Testuale (Text Search) utilizza la tecnica di analisi lessicale per trovare parole specifiche nei campi delle stringhe attraverso l'eliminazione delle parole di stop analitiche (come a, an, The, ecc.). Attualmente, MongoDB supporta circa 15 lingue.
All'inizio, "Text Search (Ricerca Testo)" era una funzione sperimentale, ma è stato abilitato di default a partire dalla versione 2.6.
Considera il seguenteposts
documenti nella raccolta, che contengono il testo degli articoli e i tag-
> db.posts.insert({ "post_text": "goditi gli articoli mongodb su w3codebox", "tags": ["mongodb", "w3codebox"] } { "post_text": "scrivere tutorial su mongodb", "tags": ["mongodb", "tutorial"] } WriteResult({ "nInserted": 1 })
Creeremo un indice di testo sul campo post_text per poter cercare nei testi degli articoli-
>db.posts.createIndex({post_text:"text"}) { "createdCollectionAutomatically": true, "numIndexesBefore": 1, "numIndexesAfter": 2, "ok": 1 }
Ora, abbiamo creato un indice di testo sul campo post_text, cercheremow3codebox
posti che contengono la parola.
> db.posts.find({$text:{$search:"w3codebox"}}).pretty(){ "_id": ObjectId("5dd7ce28f1dd4583e7103fe0"), "post_text": "goditi gli articoli mongodb su w3codebox", "tags": [ "mongodb", "w3codebox" ] }
Il comando sopra restituisce il seguente documento di risultato, il documento di risultatow3codebox
contiene la parola:
{ "_id": ObjectId("53493d14d852429c10000002"), "post_text": "goditi gli articoli mongodb su w3codebox", "tags": ["mongodb", "w3codebox"]}
Per eliminare l'indice di testo esistente, utilizza prima la seguente query per trovare il nome dell'indice-
>db.posts.getIndexes()[ { "v": 2, "key": { "_id": 1 }, "name": "_id_", "ns": "mydb.posts" }, { "v": 2, "key": { "fts": "text", "ftsx": 1 }, "name": "post_text_text", "ns": "mydb.posts", "weights": { "post_text": 1 }, "default_language": "english", "language_override": "language", "textIndexVersion": 3 } ] >
Dopo aver ottenuto il nome dell'indice dalla query sopra, eseguire il seguente comando. Ecco,post_text_text
È il nome dell'indice.
>db.posts.dropIndex("post_text_text") {"nIndexesWas": 2, "ok": 1}