Skip to content

Latest commit

 

History

History
62 lines (46 loc) · 2.94 KB

controlar-los-resultados-de-la-busqueda-con-ponderaciones.md

File metadata and controls

62 lines (46 loc) · 2.94 KB

Controlar los resultados de la búsqueda con ponderaciones

La búsqueda de texto asigna una puntuación a cada documento que contiene el término de búsqueda en los campos indexados. La puntuación determina la relevancia de un documento para una consulta de búsqueda determinada.

Para un textíndice, el peso de un campo indexado denota la importancia del campo en relación con los otros campos indexados en términos de la puntuación de búsqueda de texto.

Para cada campo indexado en el documento, MongoDB multiplica el número de coincidencias por el peso y suma los resultados. Con esta suma, MongoDB calcula la puntuación del documento. Consulte al $meta operador para obtener detalles sobre la devolución y la clasificación por puntajes de texto.

El peso predeterminado es 1 para los campos indexados. Para ajustar los pesos de los campos indexados, incluya la weightsopción en el db.collection.createIndex()método.

ADVERTENCIA: Elija los pesos con cuidado para evitar la necesidad de volver a indexar.

Una colección blogtiene los siguientes documentos:

{
  _id: 1,
  content: "This morning I had a cup of coffee.",
  about: "beverage",
  keywords: [ "coffee" ]
}

{
  _id: 2,
  content: "Who doesn't like cake?",
  about: "food",
  keywords: [ "cake", "food", "dessert" ]
}

Para crear un textíndice con diferentes pesos de campo para el contentcampo y el keywordscampo, incluya la weights opción al createIndex()método. Por ejemplo, el siguiente comando crea un índice en tres campos y asigna pesos a dos de los campos:

db.blog.createIndex(
   {
     content: "text",
     keywords: "text",
     about: "text"
   },
   {
     weights: {
       content: 10,
       keywords: 5
     },
     name: "TextIndex"
   }
 )

El textíndice tiene los siguientes campos y pesos:

  • content tiene un peso de 10,
  • keywords tiene un peso de 5, y
  • about tiene el peso predeterminado de 1.

Estos pesos denotan la importancia relativa de los campos indexados entre sí. Por ejemplo, una coincidencia de términos en el contentcampo tiene:

  • 2veces (es decir 10:5) el impacto como coincidencia de términos en el keywordscampo y
  • 10veces (es decir 10:1) el impacto como coincidencia de términos en el aboutcampo.

NOTA: Para los datos alojados en MongoDB Atlas, Atlas Search proporciona una puntuación personalizada más sólida que los textíndices. Para obtener más información, consulte la documentación de Atlas Search Scoring .