Latest web development tutorials

búsqueda de texto completo MongoDB

El establecimiento de un índice de búsqueda de texto completo para cada palabra, indicando el número y la ubicación de la palabra aparece en el artículo, cuando la consulta de un usuario, se establecerá el programa de búsqueda de antemano para encontrar el índice y los resultados de búsqueda de nuevo a método de búsqueda del usuario.

Este proceso es similar a la palabra de búsqueda por palabra proceso de recuperación diccionario mesa.

MongoDB versión 2.4 desde el principio para apoyar la búsqueda de texto completo, actualmente soporta 15 idiomas (temporalmente no soporta chino) índice de texto completo.

  • danés
  • holandés
  • Inglés
  • finlandés
  • francés
  • alemán
  • húngaro
  • italiano
  • noruego
  • portugués
  • rumano
  • ruso
  • español
  • sueco
  • turco

Habilitar la búsqueda de texto completo

Después de MongoDB versión 2.6 está habilitado de búsqueda predeterminado de texto completo, si se utiliza la versión anterior, es necesario utilizar el código siguiente para habilitar la búsqueda de texto completo:

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

O utilice el comando:

mongod --setParameter textSearchEnabled=true

Crear un índice de texto

Tenga en cuenta los siguientes conjuntos de datos de documentos puestos, incluyendo el contenido del artículo (POST_TEXT) y las etiquetas (tags):

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

Podemos construir un índice de texto del campo de POST_TEXT, por lo que podemos buscar el contenido del artículo:

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

Utilice la indización de texto

Ahora que hemos establecido un índice de texto completo de POST_TEXT, podemos buscar palabras clave en el artículo w3cschool.cc:

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

El siguiente comando devuelve los datos de los documentos contenidos w3cschool.cc siguientes palabras clave:

{ 
   "_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 está utilizando una versión anterior de MongoDB, puede utilizar el siguiente comando:

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

Utilice la indexación de texto completo puede mejorar la eficiencia de búsqueda.


Retire la indización de texto

Eliminar el índice de texto existente, puede utilizar el comando find para encontrar el nombre del índice:

>db.posts.getIndexes()

Obtener el nombre del índice por encima de mando, en este caso el índice denominado post_text_text, ejecute el siguiente comando para eliminar el índice:

>db.posts.dropIndex("post_text_text")