Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Puntúe los documentos en los resultados

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.

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 campo score toma la expresión $meta, que requiere el valor searchScore. También puede especificar el valor searchScoreDetails para el campo scoreDetails $meta la expresión para obtener un desglose detallado de la puntuación.

  • Para la etapa $vectorSearch, el campo score recibe la expresión $meta, la cual requiere el valor vectorSearchScore para devolver la puntuación de cada documento en los resultados de la búsqueda vectorial.

Nota

Se puede utilizar:

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:

1db.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])
1db.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.

1db.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.

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.

Además del comportamiento de puntuación predeterminado, MongoDB Search admite las siguientes opciones:

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.

Para ejemplos de cómo usar opciones adicionales score en tus búsquedas de MongoDB Search, consulta las siguientes páginas:

Para ver ejemplos sobre cómo utilizar el campo score en algunas consultas comunes de MongoDB Search, consulta las siguientes páginas:

Volver

opciones de búsqueda

En esta página