Recherche en texte intégral

La recherche en texte intégral construit un index pour chaque mot, indiquant le nombre de fois et les positions où le mot apparaît dans l'article. Lorsqu'un utilisateur effectue une requête, le programme de recherche recherche en fonction de l'index pré-construit et renvoie les résultats de recherche à l'utilisateur.

Ce processus est similaire à la recherche d'un mot dans l'index d'un dictionnaire.

MongoDB prend en charge la recherche en texte intégral depuis la version 2.4 et prend actuellement en charge les index de texte intégral pour 15 langues.

  • danois
  • néerlandais
  • anglais
  • finnois
  • français
  • allemand
  • hongrois
  • italien
  • norvégien
  • portugais
  • roumain
  • russe
  • espagnol
  • suédois
  • turc

Activer la recherche en texte intégral

MongoDB a la recherche en texte intégral activée par défaut à partir de la version 2.6. Si vous utilisez une version antérieure, vous devez utiliser le code suivant pour activer la recherche en 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érez les données de document suivantes dans la collection posts, qui contiennent le contenu d'article (post_text) et des tags :

{
   "post_text": "enjoy the mongodb articles on Example",
   "tags": [
      "mongodb",
      "example"
   ]
}

Nous pouvons créer un index de texte intégral sur le champ post_text, afin de pouvoir rechercher le contenu des articles :

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

Utiliser un index de texte intégral

Maintenant que nous avons créé un index de texte intégral sur post_text, nous pouvons rechercher le mot-clé example dans les articles :

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

La commande suivante renvoie les données de document contenant le mot-clé example :

{ 
   "_id" : ObjectId("53493d14d852429c10000002"), 
   "post_text" : "enjoy the mongodb articles on Example", 
   "tags" : [ "mongodb", "example" ]
}

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

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

L'utilisation d'index en texte intégral peut améliorer l'efficacité de la recherche.


Supprimer un index de texte intégral

Pour supprimer un 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 via la commande ci-dessus. Dans cet exemple, le nom de l'index est post_text_text. Exécutez la commande suivante pour supprimer l'index :

>db.posts.dropIndex("post_text_text")
Autres extensions