Latest web development tutorials

MongoDB recherche de texte intégral

La création d'un index de recherche en texte intégral pour chaque mot, en indiquant le nombre et l'emplacement du mot apparaît dans l'article, lorsque la requête d'un utilisateur, le programme de recherche sera établi à l'avance pour trouver l'indice, et les résultats de la recherche retour à la méthode de recherche de l'utilisateur.

Ce processus est similaire au mot de recherche par mot processus de récupération dictionnaire de table.

MongoDB version 2.4 dès le début pour soutenir la recherche en texte intégral, prend actuellement en charge 15 langues (temporairement ne supporte pas le chinois) d'index de texte intégral.

  • danois
  • néerlandais
  • Anglais
  • finnois
  • français
  • allemand
  • hongrois
  • italien
  • Norvégien
  • portugais
  • Roumain
  • russe
  • espagnol
  • suédois
  • turc

Activer la recherche de texte intégral

Après MongoDB version 2.6 est activée par défaut la recherche de texte intégral, si vous utilisez la version précédente, vous devez utiliser le code suivant pour activer la recherche de texte intégral:

>db.adminCommand({setParameter:true,textSearchEnabled:true})

Ou utilisez la commande:

mongod --setParameter textSearchEnabled=true

Créer un index de texte intégral

Considérons les ensembles de données de documents de messages suivants, y compris le contenu de l'article (POST_TEXT) et des étiquettes (tags):

{
   "post_text": "enjoy the mongodb articles on w3cschool.cc",
   "tags": [
      "mongodb",
      "w3cschool"
   ]
}

Nous pouvons construire index de texte intégral de champ POST_TEXT, afin que nous puissions rechercher le contenu de l'article:

>db.posts.ensureIndex({post_text:"text"})

Utilisez indexation de texte intégral

Maintenant que nous avons établi un index de texte intégral de POST_TEXT, nous pouvons rechercher des mots clés dans l'article w3cschool.cc:

>db.posts.find({$text:{$search:"w3cschool.cc"}})

La commande suivante renvoie les données de documents contenus w3cschool.cc mots-clés suivants:

{ 
   "_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" ] 
}

Si vous utilisez une ancienne version de MongoDB, vous pouvez utiliser la commande suivante:

>db.posts.runCommand("text",{search:" w3cschool.cc"})

Utilisez l'indexation en texte intégral peut améliorer l'efficacité des recherches.


Supprimer l'indexation en texte intégral

Supprimer l'index de texte intégral existant, vous pouvez utiliser la commande find pour trouver le nom de l'index:

>db.posts.getIndexes()

Obtenez le nom de l'index commande ci-dessus, dans ce cas, l'index appelé post_text_text, exécutez la commande suivante pour supprimer l'index:

>db.posts.dropIndex("post_text_text")