A cada documento devuelto por una consulta de búsqueda MongoDB o búsqueda vectorial MongoDB se le asigna una puntuación basada en su relevancia, y los documentos incluidos en un conjunto de resultados se devuelven en orden desde la puntuación más alta a la más baja.
Uso
Para incluir la puntuación de cada documento en los resultados de tu búsqueda, utiliza el $project etapa en tu pipeline de agregación.
Para el Etapa
$search, el camposcoretoma la expresión $meta, que requiere el valorsearchScore. También puede especificar el valorsearchScoreDetailspara el camposcoreDetails$meta la expresión para obtener un desglose detallado de la puntuación.Para la etapa
$vectorSearch, el camposcorerecibe la expresión $meta, la cual requiere el valorvectorSearchScorepara devolver la puntuación de cada documento en los resultados de la búsqueda vectorial.
Nota
Se puede utilizar:
searchScoresolo en$searchconsultasvectorSearchScoresolo en$vectorSearchconsultas
Si utilizas searchScore y vectorSearchScore en cualquier otra query, MongoDB registra una advertencia a partir de MongoDB v8.2.
Ejemplo
La siguiente consulta utiliza una etapa para agregar un campo $project llamado score a los documentos devueltos:
1 db.movies.aggregate([ 2 { 3 "$search": { 4 "text": { 5 <operator-specification> 6 } 7 } 8 }, 9 { 10 "$project": { 11 "<field-to-include>": 1, 12 "<field-to-exclude>": 0, 13 "score": { "$meta": "searchScore" } 14 } 15 } 16 ])
1 db.movies.aggregate([ 2 { 3 "$search": { 4 "text": { 5 <operator-specification> 6 }, 7 "scoreDetails": true 8 } 9 }, 10 { 11 "$project": { 12 "<field-to-include>": 1, 13 "<field-to-exclude>": 0, 14 "scoreDetails": { "$meta": "searchScoreDetails" } 15 } 16 } 17 ])
Para obtener más información, consulta las devoluciones sobre los detalles de puntuación de búsqueda.
1 db.movies.aggregate([ 2 { 3 "$vectorSearch": { 4 <query-syntax> 5 } 6 }, 7 { 8 "$project": { 9 "<field-to-include>": 1, 10 "<field-to-exclude>": 0, 11 "score": { "$meta": "vectorSearchScore" } 12 } 13 } 14 ])
Para obtener más información, consulta Puntuación de búsqueda vectorial de MongoDB.
Comportamiento
La puntuación asignada a un documento devuelto forma parte de los metadatos del documento. Puedes utilizar una etapa $project en tu pipeline de agregación para incluir la puntuación de cada documento devuelto junto con el conjunto de resultados. Los documentos retornan del puntaje más alto al más bajo. Muchos factores pueden influir en la puntuación de un documento, incluyendo los siguientes:
Posición del término de búsqueda en el documento.
Frecuencia de aparición del término de búsqueda en el documento.
Tipo de operador o analizador que utiliza una query de MongoDB Search.
Para obtener más información sobre el algoritmo de puntuación de Lucene, consulte la documentación de Lucene.
Opciones adicionales
Además del comportamiento de puntuación predeterminado, MongoDB Search admite las siguientes opciones:
Modificar la puntuación asignada a determinados documentos.
Devolución de un desglose detallado de la puntuación mediante la opción detalles de puntuación.
Normalización de la puntuación de búsqueda.
Considerations
Si varios documentos en los resultados tienen puntuaciones idénticas, el orden de los documentos en los resultados es no determinista. Si deseas que los resultados de MongoDB Search tengan un orden determinado, incluye la opción sort en tu etapa $search para ordenar los resultados según un campo único. Puedes utilizar la opción de ordenar para devolver también una ordenación ascendente de los resultados por puntuación. Para obtener más información, consulte Ordenar los resultados de búsqueda de MongoDB Search y Ejemplos de ordenación por puntuación.
En nodos de búsqueda independientes, cada nodo asigna documentos con diferentes IDs internos de Lucene para la ordenación cuando las puntuaciones son idénticas. Al clasificar y paginar los resultados, el proceso de mongot en el nodo que procesa la consulta podría incluir documentos de otros nodos si sus ID internos tienen un orden de paginación mayor que el del token. Para evitar esto, utiliza $match tras $search para excluir documentos por su _id.
Cuando se consultan valores en arreglos, MongoDB Search asigna mayores puntuaciones si más valores en el arreglo coinciden con la query.
Tutorials
Para ejemplos de cómo usar opciones adicionales | |
Para ver ejemplos sobre cómo utilizar el campo |