what tutorial replicated replicacion replica español allow mongodb full-text-search nosql

tutorial - sharding mongodb español



Buscando en MongoDB (2)

Imagine que necesita implementar una búsqueda en MongoDB. Tienes una colección de documentos que se ven así:

{text: "This is some Text } {text: "this is another text hehe"}

Ahora desea implementar una búsqueda que no distinga entre mayúsculas y minúsculas y que devuelva todos los documentos que contienen el término de búsqueda. Por ejemplo, si busca "texto", devolvería ambos documentos. Si busca "jeje", devolvería solo el segundo documento.

Sé que puedes hacer esto usando $ regex como este:

db.comments.find({text: {$regex: /.*SEARCH_TERM.*/i}});

Donde SEARCH_TERM es un término que estamos buscando.

Me pregunto si existe una mejor manera de hacerlo porque buscar a través de expresiones regulares parece una mala idea. No hay indexación ni nada de esta manera.

Mi idea es que podrías tokenizar ese texto en documentos, de modo que tendrías documentos como este:

{text: ["This", "is", "some", "Text"]} {text: ["this", "is", "another", "text", "hehe"]}

y luego indexar estas matrices. ¿Hay alguna forma mejor de hacer esto?


Puede ser divertido hacer un Map Reduce:

mapper=function(){ var words=this.text.match(//S+/s*/g); for (w in words){ emit(this._id, {''words'':words}) } } reducer=function(k,v){return {''words'':this[0].words}}

Esto debería obtener una colección con las palabras separadas. Probablemente haya una forma de hacer esto con agregaciones.