Cada documento devuelto por una query de MongoDB Search o MongoDB Vector Search recibe una puntuación basada en la relevancia, y los documentos incluidos en un conjunto de resultados son devueltos en orden de mayor a menor puntuación.
Uso
Para incluir la puntuación de cada documento en los resultados de búsqueda, utiliza la etapa $project ; en el pipeline de agregación.
Para la etapa
$vectorSearch, el camposcoreutiliza la expresión $meta, que requiere el valorvectorSearchScorepara devolver la puntuación de cada documento en los resultados de la búsqueda vectorial.
Nota
Se puede utilizar:
searchScoresolo en$searchqueryvectorSearchScoresolo en$vectorSearchquery
Si utilizas searchScore y vectorSearchScore en cualquier otra query, MongoDB registra una advertencia a partir de MongoDB v8.2.
Ejemplo
La siguiente query utiliza una etapa $project para añadir un campo 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 Evaluació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, consultar la documentación de Lucene.
Opciones adicionales
Además del comportamiento de puntuación por defecto, MongoDB Search admite las siguientes opciones:
Modificar la puntuación asignada a ciertos 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 |