MongoDB ricerca full-text
L'istituzione di un full-text indice di ricerca per ogni parola, indicando il numero e la posizione della parola appare in questo articolo, quando la query di un utente, sarà stabilito il programma di ricerca in anticipo per trovare l'indice, e tutti i risultati di nuovo al metodo di ricerca dell'utente.
Questo processo è simile alla parola di ricerca per parola processo di recupero tavolo dizionario.
MongoDB versione 2.4 sin dall'inizio per supportare la ricerca full-text, supporta attualmente 15 lingue (temporaneamente non supporta cinese) indice full-text.
- danese
- olandese
- inglese
- finlandese
- francese
- tedesco
- ungherese
- italiano
- norvegese
- portoghese
- rumeno
- russo
- spagnolo
- svedese
- turco
Attivare la ricerca full-text
Dopo MongoDB versione 2.6 è attivata per impostazione predefinita di ricerca full-text, se si utilizza la versione precedente, è necessario utilizzare il seguente codice per attivare la ricerca full-text:
>db.adminCommand({setParameter:true,textSearchEnabled:true})
Oppure utilizzare il comando:
mongod --setParameter textSearchEnabled=true
Creazione di un indice full-text
Considerate i seguenti gruppi di dati posti di documenti, compreso il contenuto dell'articolo (post_text) e le etichette (tag):
{ "post_text": "enjoy the mongodb articles on w3cschool.cc", "tags": [ "mongodb", "w3cschool" ] }
Possiamo costruire indice full-text di campo post_text, in modo che possiamo cercare il contenuto di questo articolo:
>db.posts.ensureIndex({post_text:"text"})
Utilizzare l'indicizzazione full-text
Ora che abbiamo stabilito un indice full-text di post_text, possiamo cercare per parole chiave nel w3cschool.cc articolo:
>db.posts.find({$text:{$search:"w3cschool.cc"}})
Il seguente comando restituisce i dati del documento contenuti w3cschool.cc seguenti parole chiave:
{ "_id" : ObjectId("53493d14d852429c10000002"), "post_text" : "enjoy the mongodb articles on w3cschool.cc", "tags" : [ "mongodb", "w3cschool" ] } { "_id" : ObjectId("53493d1fd852429c10000003"), "post_text" : "writing tutorials on w3cschool.cc", "tags" : [ "mongodb", "tutorial" ] }
Se si utilizza una versione precedente di MongoDB, è possibile utilizzare il seguente comando:
>db.posts.runCommand("text",{search:" w3cschool.cc"})
Utilizzare l'indicizzazione full-text può migliorare l'efficienza di ricerca.
Togliere l'indicizzazione full-text
Eliminare l'indice full-text esistente, è possibile utilizzare il comando find per trovare il nome di indice:
>db.posts.getIndexes()
Ottenere il nome dell'indice sopra di comando, in questo caso l'indice denominato post_text_text, eseguire il seguente comando per eliminare l'indice:
>db.posts.dropIndex("post_text_text")