English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
desde2.4A partir de la versión inicial, MongoDB comenzó a soportar índices de texto para buscar contenido de cadenas. La Búsqueda de Texto (Text Search) utiliza la tecnología de análisis de raíz para encontrar palabras específicas en campos de cadena eliminando las palabras de análisis de raíz (como a, an, The, etc.). Actualmente, MongoDB admite aproximadamente15varias lenguas.}}
Inicialmente, "Text Search (Búsqueda de Texto)" era una función experimental, pero desde2.6a partir de la versión, esta configuración se habilita por defecto.
Considera lo siguienteposts
los documentos en la colección, que contienen el texto de los artículos y las etiquetas-
> db.posts.insert({ "post_text": "disfruta de los artículos de mongodb en w3codebox", "tags": ["mongodb", "w3codebox"] } "ns": "mydb.posts" "post_text": "escribiendo tutoriales sobre mongodb", "tags": ["mongodb", "tutorial"] }) WriteResult({ "nInserted": 1 })
Vamos a crear un índice de texto en el campo post_text para poder buscar en el texto de los artículos.-
>db.posts.createIndex({post_text:"text"}) "ns": "mydb.posts" "createdCollectionAutomatically": true, "numIndexesBefore": 1, "numIndexesAfter": 2, "ok": 1 }
Ahora, hemos creado un índice de texto en el campo post_text, buscaremosw3codebox
todos los artículos que contienen la palabra en el texto.
> db.posts.find({$text:{$search:"w3codebox"}}).pretty(){ "_id": ObjectId("5dd7ce28f1dd4583e7103fe0"), "post_text": "disfruta de los artículos de mongodb en w3codebox", "tags": [ "mongodb", "w3codebox" ] }
El comando anterior devuelve el siguiente documento de resultados, el documentow3codebox
El texto de publicación contiene la palabra:
"ns": "mydb.posts" "_id": ObjectId("53493d14d852429c10000002", "post_text": "disfruta de los artículos de mongodb en w3codebox", "tags": ["mongodb", "w3codebox"]}
Para eliminar el índice de texto existente, primero use la siguiente consulta para encontrar el nombre del índice-
>db.posts.getIndexes()[ "ns": "mydb.posts" "v": { 2, "key": { "_id": 1 } "name": "_id_", "ns" : "mydb.posts" } "ns": "mydb.posts" "v": { 2, "key": { "fts": "text", "ftsx": : 1 } "name": "post_text_text", "ns": "mydb.posts", "weights": { "post_text": : 1 } "default_language": "english", "language_override": "language", "textIndexVersion": : 3 } ] >
Después de obtener el nombre del índice de la consulta superior, ejecuta el siguiente comando. Aquí,post_text_text
Es el nombre del índice.
>db.posts.dropIndex("post_text_text") { "nIndexesWas": : 2, "ok": : 1 }