¿Cómo se calcula el puntaje en Elasticsearch?
El puntaje en Elasticsearch es un concepto clave que determina qué tan bien coincide un documento almacenado en un índice con la búsqueda que has realizado. Este puntaje es representado por un número, y entre más alto sea este número, mayor es la relevancia del documento con respecto a la búsqueda. Este proceso se utiliza para ordenar los documentos en función de su pertinencia.
¿Cómo funciona el algoritmo de puntuación?
El algoritmo de Elasticsearch verifica dos aspectos principales:
-
Número de ocurrencias del texto: Este factor examina cuántas veces aparece el término de búsqueda en los documentos.
-
Unicidad de las palabras: Evalúa qué tan única es una palabra en el contenido de los documentos dentro de un índice completo.
Por defecto, los documentos se ordenan utilizando este puntaje en las búsquedas realizadas, mostrando los documentos más relevantes en la parte superior de los resultados.
Ejemplo práctico: Uso de Postman con Elasticsearch
Para entender cómo se evalúa el puntaje en ElasticSearch, crearemos un conjunto de documentos de ejemplo.
¿Cómo agregar un documento en Elasticsearch?
Usaremos Postman para agregar un documento al índice de ejemplo. Creamos un nuevo plato:
PUT /platos/_doc/3
{
"nombre": "Nachos XL",
"descripcion": "Nachos con carne, guacamole, pico de gallo, salsa picante y queso.",
"estado": "activo",
"pedidos_ultima_hora": 11,
"ultima_modificacion": "2020-03-01",
"modificado_por": "[email protected]"
}
El documento con ID = 3, denominado "Nachos XL", es agregado, y estamos listos para realizar una búsqueda con puntajes.
¿Cómo realizar búsquedas y evaluar el puntaje?
- Búsqueda básica: Realizaremos una búsqueda sencilla con la cadena "nachos con queso":
GET /platos/_search
{
"query": {
"simple_query_string": {
"query": "nachos con queso"
}
}
}
Resultado: Se devuelven dos documentos, "Nachos XL" y "La Ensanadísima". "Nachos XL" tiene un puntaje más alto (3.014) al contener más coincidencias de las palabras clave.
- Búsqueda alternativa: Cambiamos la búsqueda a "bowl de pollo saludable":
GET /platos/_search
{
"query": {
"simple_query_string": {
"query": "bowl de pollo saludable"
}
}
}
Resultado: Se devuelven "Bowl picante" y "La Ensanadísima", con puntajes más cercanos, reflejando una mayor proximidad en los términos buscados.
Ajuste de pesos en las búsquedas
Elasticsearch permite ajustar el peso de ciertos campos para influir en la relevancia de los resultados.
¿Cómo ajustar los pesos de los campos en una búsqueda?
Podemos asignar un peso mayor al campo de nombre:
GET /platos/_search
{
"query": {
"simple_query_string": {
"query": "guacamole picante",
"fields": ["nombre^2", "descripcion"]
}
}
}
Al asignar un peso mayor al campo "nombre", cambiamos la relevancia relativa de los documentos. Ahora "Bowl picante" puede obtener un puntaje más alto en contraste con una búsqueda inversa donde se le da más peso al "descripcion".
Implicaciones de ajustes en el puntaje
Al cambiar los pesos, observamos cómo el nombre impacta significativamente el resultado y cómo Elasticsearch permite moldear la relevancia en función de las necesidades de búsqueda específicas.
Cada ajuste puede modificar qué documento se considera más relevante, lo que demuestra la flexibilidad y el poder de Elasticsearch para personalizar los resultados de búsqueda. ¡Sigue explorando y experimentando con ElasticSearch para convertirte en un experto en gestión de búsquedas eficientes y efectivas!
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?