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.
For the
$vectorSearchstage, thescorefield takes the$metaexpression, which requires thevectorSearchScorevalue to return the score of each document in your vector search results.
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.
On separate Search Nodes, each node assigns documents different internal Lucene IDs used for sorting when scores are identical. When sorting and paginating results, the mongot process on the node that is processing the query might include documents from other nodes if their internal IDs have greater pagination order than the token. To prevent this, use $match after $search to exclude documents by their _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 |