Latest web development tutorials

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")