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 búsqueda, utilice el $project etapa en su canal de agregación.
Para el
$searchEn la etapa, elscorecampo utiliza la expresión $meta, que requiere elsearchScorevalor. También puede especificar elsearchScoreDetailsvalor para lascoreDetailsexpresión $meta del campo para obtener un desglose detallado de la puntuación.Para la etapa,
$vectorSearchelscorecampo toma la expresión $meta, que requiere elvectorSearchScorevalor para devolver la puntuación de cada documento en los resultados de búsqueda vectorial.
Nota
Puedes utilizar:
searchScoresolo en$searchconsultasvectorSearchScoresolo en$vectorSearchconsultas
Si utiliza searchScore y vectorSearchScore en cualquier otra consulta, 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, consulte los detalles de la 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 sus metadatos. Puede usar una $project etapa en su canal de agregación para incluir la puntuación de cada documento devuelto junto con el conjunto de resultados. Los documentos se devuelven de mayor a menor puntuación. Muchos factores pueden influir en la puntuación de un documento, entre ellos:
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 consulta de búsqueda de MongoDB.
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.
Devolver un desglose detallado de la puntuación mediante la opción de detalles de la puntuación.
Normalizando la puntuación de búsqueda.
Considerations
Si varios documentos en los resultados tienen puntuaciones idénticas, su ordenación no es determinista. Si desea que los resultados de búsqueda de MongoDB tengan un orden determinado, incluya la opción de ordenación en $search la etapa para ordenar los resultados por un campo único. También puede usar la opción de ordenación para obtener un orden ascendente de los resultados por puntuación. Para obtener más información, consulte Ordenar resultados de búsqueda de MongoDB y Ejemplos de ordenación por puntuación.
En nodos de búsqueda independientes, cada nodo asigna a los documentos diferentes ID internos de Lucene, que se utilizan para ordenar cuando las puntuaciones son idénticas. Al ordenar y paginar los resultados, el mongot proceso del 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, utilice después $match $search de _idpara excluir los documentos por su.
Al consultar valores de una matriz, MongoDB Search asigna puntuaciones más altas si más valores en la matriz coinciden con la consulta.
Tutorials
Para obtener ejemplos sobre cómo utilizar opciones | |
Para obtener ejemplos sobre cómo utilizar el campo |