sql >> Base de Datos >  >> NoSQL >> MongoDB

Búsqueda de texto completo con peso en mangosta

Sí, puede utilizar la búsqueda de texto completo en Mongoose>=3.8.9. En primer lugar, una colección puede tener como máximo un índice de texto (ver documentos). Entonces, para definir el índice de texto para varios campos, necesita un índice compuesto:

schema.index({ animal: 'text', color: 'text', pattern: 'text', size: 'text' });

Ahora puedes usar $text operador de consulta como este:

Model
    .find(
        { $text : { $search : "text to look for" } }, 
        { score : { $meta: "textScore" } }
    )
    .sort({ score : { $meta : 'textScore' } })
    .exec(function(err, results) {
        // callback
    });

Esto también ordenará los resultados por puntuación de relevancia.

En cuanto a los pesos, puede intentar pasar el objeto de opciones de pesos a index() método (donde define el índice compuesto) (trabajando al menos con v4.0.1 de mongoose):

schema.index({ animal: 'text', color: 'text', pattern: 'text', size: 'text' }, {name: 'My text index', weights: {animal: 10, color: 4, pattern: 2, size: 1}});