¡Un Cambio de Juego! Construyendo Búsqueda en tus Aplicaciones

Rate this content
Bookmark

Construir búsqueda en aplicaciones puede ser bastante fácil. Esta charla ha sido realmente divertida para las audiencias porque a menudo involucro a los miembros del público, a menudo construyendo el código ellos mismos, mientras intentan desafiar a los demás nombrando las cosas más difíciles de encontrar. La aplicación está alojada en un Code Sandbox, por lo que la audiencia se lleva el código a casa. Además, puedo hacer la misma presentación con películas, si los organizadores lo prefieren.

This talk has been presented at Node Congress 2023, check out the latest edition of this JavaScript Conference.

FAQ

El 87% de los compradores de e-commerce comienzan su viaje en la barra de búsqueda según Google, Amazon, Stack Overflow o Salesforce.

El 68% de los compradores abandonarán su viaje si se les proporciona una mala experiencia de usuario, de acuerdo con Forrester.

Las bases de datos de documentos son más adecuadas para manejar grandes volúmenes de datos no estructurados y semi-estructurados que las bases de datos relacionales, lo que mejora el rendimiento en las búsquedas.

Apache Lucene toma los datos de una base de datos de documentos y los procesa mediante un análisis para descomponerlos en tokens, que se almacenan en un índice invertido, mejorando así la precisión y eficiencia de las búsquedas.

El tipo de analizador afecta cómo se descomponen los textos en tokens. Por ejemplo, diferentes analizadores pueden o no tener en cuenta las mayúsculas o la puntuación, lo que resulta en variaciones en los resultados de búsqueda.

La relevancia es crucial porque determina el orden en que los documentos son mostrados al usuario, priorizando aquellos que mejor coinciden con los términos de búsqueda y ofreciendo primero las coincidencias más pertinentes.

Karen Huaulme
Karen Huaulme
8 min
14 Apr, 2023

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Implementar las estrategias y herramientas adecuadas, como Apache Lucene, puede mejorar el rendimiento de búsqueda y la experiencia del usuario. La elección del analizador afecta los resultados de búsqueda y los operadores de consulta proporcionan varias opciones de búsqueda. La puntuación relevante es crucial para clasificar los documentos según su relevancia. La puntuación personalizada puede priorizar criterios específicos. Considere los analizadores, los operadores de consulta y los métodos de puntuación para optimizar la experiencia de búsqueda.

1. Introducción al juego de búsqueda y Apache Lucene

Short description:

Tienes datos y usuarios que necesitan acceder a ellos. El juego de búsqueda consiste en ayudar a los usuarios a encontrar lo que quieren. Implementar las estrategias y herramientas adecuadas, como una base de datos de documentos como Apache Lucene, puede mejorar el rendimiento de búsqueda y la experiencia del usuario.

¡Escuchen, gente! Tienes data y tienes usuarios y tus usuarios necesitan acceder a tus data. Ya sea Google, Amazon, Stack Overflow o Salesforce dice que el 87% de los compradores de e-commerce comienzan su viaje en la barra de búsqueda. Y Forrester dice que el 68% de esos compradores abandonarán su viaje si proporcionas una mala experiencia de usuario.

Ahora, esta barra de búsqueda parece simple, pero al otro lado de esa barra de búsqueda están tus usuarios y no son tan simples. No saben lo que quieren. No saben cómo expresar lo que quieren. No saben cómo escribirlo. Y lograr que obtengan lo que quieren es lo que yo llamo el juego de búsqueda. Y cuando juegas el juego de búsqueda correctamente, puedes tomar esta barra de búsqueda y convertirla en esta meta gigante. Una meta tan grande de hecho que tus usuarios simplemente no pueden perderse. Obtendrán todo lo que están buscando, incluyendo las cosas que ni siquiera sabían que estaban buscando. Cuando juegas el juego de búsqueda correctamente, eso significa que obtienes más participación, más clics, más usuarios, más likes, más compartidos y más ingresos. Entonces, tus competidores y todos los que no son tú son tus competidores.

Así que hoy te voy a enseñar cómo implementar las estrategias adecuadas y las herramientas adecuadas que necesitarás para lograr esto. Lo primero que necesitas para tu equipo adecuado es una base de datos de documentos. Cuando los usuarios quieren tus data, probablemente estén buscando a través de volúmenes y volúmenes de data no estructurados y semi-estructurados. Ahora, las bases de datos relacionales son fantásticas para las tablas. Todo lo que está en una columna en una fila es genial. Cuando conoces el patrón de consulta de antemano, es genial para eso. Pero para la búsqueda, el performance disminuye, por lo que querrás una base de datos de documentos.

El siguiente jugador estrella que tienes es Apache Lucene. Apache Lucene es tu jugador estrella. Todos los equipos ganadores juegan con Apache Lucene. Netflix, Walmart, Ebay, es una fuente abierta probada en batalla. Ha estado en el mercado durante 20 años. Por eso lo juegan. Y puedes construir tu propia cosa, pero ¿por qué cultivar a un jugador prometedor cuando Messi ya está calentando, listo y hambriento para jugar para ti. Así que Apache Lucene es tu jugador estrella y su gran jugada es que toma esa base de datos de documentos y ejecuta esos data a través de un proceso llamado análisis. El análisis va a tomar ese data, descomponerlo en diferentes tokens dependiendo de el analizador que uses y esos tokens se almacenan en un índice invertido. Así que Lucene utiliza un índice invertido.

2. Proceso de búsqueda y optimización

Short description:

Cuando se utiliza el analizador estándar en Lucene, buscar 'Manchester United' generará dos tokens: 'Manchester' y 'United'. La elección del analizador afecta los resultados de búsqueda, como se demuestra con el analizador de palabras clave, que devuelve solo jugadores de Manchester United. Los operadores de consulta, como regex, frase, texto, facetas y autocompletado, proporcionan a los usuarios diversas opciones de búsqueda. La puntuación relevante desempeña un papel crucial en los motores de búsqueda, ya que clasifica los documentos según su relevancia para la consulta de búsqueda. La puntuación personalizada se puede utilizar para priorizar criterios específicos, como la puntuación general de la FIFA. Considera la elección de analizadores, operadores de consulta y métodos de puntuación para optimizar la experiencia de búsqueda para tus usuarios.

Entonces, repasemos este proceso en una práctica, veamos cómo se siente. Si tengo estos cuatro documentos con estos equipos de fútbol y su campo de identificación único con guión bajo ID, si buscara en esos documentos 'Manchester United', se convertiría en minúsculas todo, eliminaría toda la puntuación, me quedaría con dos tokens diferentes, Manchester y United, utilizando el analizador estándar en Lucene. Esos son mis dos tokens.

Entonces, cuando busco en estos documentos esas cosas, mis tokens o mis términos se asignarán a dos documentos, uno en dos para Manchester y otro en tres para United. Entonces, mi índice invertido contendrá mis tokens o mis términos, qué documentos y otra información útil metadatos, frecuencia, posición, etc. Ahora, tener los tokens o los términos correctos puede hacer o deshacer una buena experiencia de búsqueda para ti. Por lo tanto, es importante utilizar el analizador correcto para obtener los términos correctos.

Ahora te mostraré a qué me refiero con este ejemplo. Esta es una aplicación que escribí llamada Atlas Search Soccer. Utiliza Atlas Search. En ella, utilicé la base de datos de jugadores de la FIFA para que puedas encontrar muchas opciones de búsqueda diferentes para encontrar tu equipo de ensueño de la FIFA y puedes poner tus propios jugadores allí. También te mostrará el código de las consultas sobre cómo hacerlo. Ahora sé que se llama fútbol en todas partes del mundo excepto en los Estados Unidos, pero ya compré el nombre de dominio, así que nos quedaremos con eso. Así que en este caso, estoy buscando jugadores de Manchester United. Estoy utilizando el analizador estándar. Como recordarás, es Manchester United. Así que obtendré 697 jugadores cuando busque Manchester United porque me está dando Manchester United y West Ham United y Manchester City y cualquier otra cosa con Manchester United. Sin embargo, si cambio al analizador de palabras clave como lo estoy haciendo aquí, encuentro 33 jugadores coincidentes y todos son realmente de Manchester United porque cuando paso, esto utiliza el analizador de palabras clave que toma todo, mantiene la puntuación, mantiene las mayúsculas, todas las mayúsculas, y me da ese único token. Así que los analizadores de palabras clave son fantásticos si estás utilizando casillas de verificación.

Entonces, tus tokens importan, lo que significa que tus analizadores importan. Lo siguiente que debes considerar son tus operadores de consulta, ya sea regex, frase, texto, si estás utilizando facetas o si estás utilizando autocompletado. Esta es una forma de permitir que tus usuarios hagan su mejor intento. Cada usuario es diferente. Cada usuario tiene una preferencia diferente de cómo van a buscar cosas, así que quieres, en tu aplicación, darles tantas opciones como sea posible. Y, por supuesto, no puedo hablar de dar a tus usuarios la mejor oportunidad de encontrar tus datos sin hablar de la puntuación. La puntuación relevante es muy importante en la búsqueda. Todos los motores de búsqueda van a calificar todos tus documentos según qué tan bien coincidan con la consulta de búsqueda y eso se llama relevancia. Y te devolverá tus documentos con la puntuación en orden descendente. Así que te dará lo que cree que son las mejores coincidencias, las más relevantes primero.

En este ejemplo, por ejemplo, estoy buscando a Cristiano Ronaldo para mi equipo de ensueño de la FIFA y solo busco Ronaldo y obtengo a este encantador caballero primero, pero ese no es el Ronaldo que quiero porque busca primero la relevancia. Quiero que la puntuación general de la FIFA sea muy alta en eso. Así que en esta consulta, voy a tener en cuenta la puntuación general de la FIFA, que es el campo en cada uno de mis documentos. Lo voy a tener en cuenta en mi puntuación de relevancia y ahora obtengo a Cristiano Ronaldo primero. Es muy difícil en cuanto a su personalidad, pero es muy bueno y lo quiero en mi equipo de ensueño. Así que con eso, la puntuación importa, la puntuación personalizada porque quieres que todo esté correcto, piensa en tus datos, piensa en tu interfaz de usuario, piensa en tus tokens y no estoy haciendo clic, tenía una interacción tan agradable, oh ahí va. Piensa en tus tokens, entra, elige tu analizador en consecuencia que entra en tu índice dentro de tus consultas y todo eso se servirá a tus usuarios para que tengan su mejor oportunidad de encontrar tus datos antes de encontrarlos en tus competidores. Muchas gracias.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Remix Flat Routes – Una Evolución en el Enrutamiento
Remix Conf Europe 2022Remix Conf Europe 2022
16 min
Remix Flat Routes – Una Evolución en el Enrutamiento
Top Content
Remix Flat Routes is a new convention that aims to make it easier to see and organize the routes in your app. It allows for the co-location of support files with routes, decreases refactor and redesign friction, and helps apps migrate to Remix. Flat Folders convention supports co-location and allows importing assets as relative imports. To migrate existing apps to Flat Routes, use the Remix Flat Routes package's migration tool.
No sabes cómo hacer SSR
DevOps.js Conf 2024DevOps.js Conf 2024
23 min
No sabes cómo hacer SSR
The Talk covers the speaker's personal journey into server-side rendering (SSR) and the evolution of web development frameworks. It explores the use of jQuery for animations in SSR, the challenges faced in integrating React with Umbraco, and the creation of a custom SSR framework. The Talk also discusses the benefits of Next.js and the use of serverless artifacts for deployment. Finally, it highlights the features of Astro, including its function per route capability.
Cómo hacer un juego web tú solo
JS GameDev Summit 2023JS GameDev Summit 2023
27 min
Cómo hacer un juego web tú solo
This talk guides you on how to make a web game by yourself, emphasizing the importance of focusing on tasks that interest you and outsourcing the rest. It suggests choosing a game engine that allows distribution on the web and aligns with your understanding and enjoyment. The talk also highlights the significance of finding fun in the creative process, managing scope, cutting features that don't align with the game's direction, and iterating to the finish line. It concludes by discussing the options for publishing the game on the web and leveraging unique web features.
Despliegue Atómico para Hipsters de JavaScript
DevOps.js Conf 2024DevOps.js Conf 2024
25 min
Despliegue Atómico para Hipsters de JavaScript
This Talk discusses atomic deployment for JavaScript and TypeScript, focusing on automated deployment processes, Git hooks, and using hard links to copy changes. The speaker demonstrates setting up a bare repository, configuring deployment variables, and using the post-receive hook to push changes to production. They also cover environment setup, branch configuration, and the build process. The Talk concludes with tips on real use cases, webhooks, and wrapping the deployment process.
Tu Ritmo con GraphQL
GraphQL Galaxy 2022GraphQL Galaxy 2022
31 min
Tu Ritmo con GraphQL
The Talk discusses the value proposition of GraphQL and its ability to solve common pain points in API development. It highlights the importance of making informed decisions when choosing GraphQL clients, servers, and schema builders. The Talk also emphasizes the need to focus on the best developer experience in the present rather than seeking a perfect long-term solution. Additionally, it mentions the future of the Urkel GraphQL client and the reasons for dropping ReScript support. Overall, the Talk provides insights into the current state and future trends of GraphQL development.
AWS Lambda bajo el capó
Node Congress 2023Node Congress 2023
22 min
AWS Lambda bajo el capó
Top Content
In this Talk, key characteristics of AWS Lambda functions are covered, including service architecture, composition, and optimization of Node.js code. The two operational models of Lambda, asynchronous and synchronous invocation, are explained, highlighting the scalability and availability of the service. The features of Lambda functions, such as retries and event source mapping, are discussed, along with the micro VM lifecycle and the three stages of a Lambda function. Code optimization techniques, including reducing bundle size and using caching options, are explained, and tools like webpack and Lambda Power Tuning are recommended for optimization. Overall, Lambda is a powerful service for handling scalability and traffic spikes while enabling developers to focus on business logic.

Workshops on related topic

IA a demanda: IA sin servidor
DevOps.js Conf 2024DevOps.js Conf 2024
163 min
IA a demanda: IA sin servidor
Top Content
Featured WorkshopFree
Nathan Disidore
Nathan Disidore
En esta masterclass, discutimos los méritos de la arquitectura sin servidor y cómo se puede aplicar al espacio de la IA. Exploraremos opciones para construir aplicaciones RAG sin servidor para un enfoque más lambda-esque a la IA. A continuación, nos pondremos manos a la obra y construiremos una aplicación CRUD de muestra que te permite almacenar información y consultarla utilizando un LLM con Workers AI, Vectorize, D1 y Cloudflare Workers.
Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web
React Summit 2024React Summit 2024
92 min
Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web
Featured Workshop
Vivek Nayyar
Vivek Nayyar
Sumérgete en el mundo de la IA con nuestro masterclass interactivo diseñado específicamente para desarrolladores web. "Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web" ofrece una oportunidad única para cerrar la brecha entre la IA y el desarrollo web. A pesar de la prominencia de Python en el desarrollo de IA, el vasto potencial de JavaScript sigue siendo en gran medida inexplorado. Este masterclass tiene como objetivo cambiar eso.A lo largo de esta sesión práctica, los participantes aprenderán cómo aprovechar LangChain, una herramienta diseñada para hacer que los modelos de lenguaje grandes sean más accesibles y útiles, para construir agentes de IA dinámicos directamente dentro de entornos JavaScript. Este enfoque abre nuevas posibilidades para mejorar las aplicaciones web con funciones inteligentes, desde el soporte al cliente automatizado hasta la generación de contenido y más.Comenzaremos con los conceptos básicos de LangChain y los modelos de IA, asegurando una base sólida incluso para aquellos nuevos en IA. A partir de ahí, nos sumergiremos en ejercicios prácticos que demuestran cómo integrar estas tecnologías en proyectos reales de JavaScript. Los participantes trabajarán en ejemplos, enfrentando y superando los desafíos de hacer que la IA funcione sin problemas en la web.Este masterclass es más que una experiencia de aprendizaje; es una oportunidad de estar a la vanguardia de un campo emergente. Al final, los asistentes no solo habrán adquirido habilidades valiosas, sino que también habrán creado funciones mejoradas con IA que podrán llevar a sus proyectos o lugares de trabajo.Ya seas un desarrollador web experimentado curioso acerca de la IA o estés buscando expandir tus habilidades en áreas nuevas y emocionantes, "Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web" es tu puerta de entrada al futuro del desarrollo web. Únete a nosotros para desbloquear el potencial de la IA en tus proyectos web, haciéndolos más inteligentes, interactivos y atractivos para los usuarios.
Construye y Despliega un Backend con Fastify y Platformatic
JSNation 2023JSNation 2023
104 min
Construye y Despliega un Backend con Fastify y Platformatic
WorkshopFree
Matteo Collina
Matteo Collina
Platformatic te permite desarrollar rápidamente APIs GraphQL y REST con un esfuerzo mínimo. La mejor parte es que también te permite aprovechar todo el potencial de Node.js y Fastify cuando lo necesites. Puedes personalizar completamente una aplicación de Platformatic escribiendo tus propias características y complementos adicionales. En el masterclass, cubriremos tanto nuestros módulos de código abierto como nuestra oferta en la nube:- Platformatic OSS (open-source software) — Herramientas y bibliotecas para construir rápidamente aplicaciones robustas con Node.js (https://oss.platformatic.dev/).- Platformatic Cloud (actualmente en beta) — Nuestra plataforma de alojamiento que incluye características como aplicaciones de vista previa, métricas integradas e integración con tu flujo de Git (https://platformatic.dev/).
En este masterclass aprenderás cómo desarrollar APIs con Fastify y desplegarlas en la nube de Platformatic.
Despliegue de aplicaciones React Native en la nube
React Summit 2023React Summit 2023
88 min
Despliegue de aplicaciones React Native en la nube
WorkshopFree
Cecelia Martinez
Cecelia Martinez
Desplegar aplicaciones React Native manualmente en una máquina local puede ser complejo. Las diferencias entre Android e iOS requieren que los desarrolladores utilicen herramientas y procesos específicos para cada plataforma, incluidos los requisitos de hardware para iOS. Los despliegues manuales también dificultan la gestión de las credenciales de firma, las configuraciones de entorno, el seguimiento de las versiones y la colaboración en equipo.
Appflow es la plataforma de DevOps móvil en la nube creada por Ionic. Utilizar un servicio como Appflow para construir aplicaciones React Native no solo proporciona acceso a potentes recursos informáticos, sino que también simplifica el proceso de despliegue al proporcionar un entorno centralizado para gestionar y distribuir tu aplicación en múltiples plataformas. Esto puede ahorrar tiempo y recursos, permitir la colaboración, así como mejorar la confiabilidad y escalabilidad general de una aplicación.
En este masterclass, desplegarás una aplicación React Native para su entrega en dispositivos de prueba Android e iOS utilizando Appflow. También aprenderás los pasos para publicar en Google Play y Apple App Stores. No se requiere experiencia previa en el despliegue de aplicaciones nativas, y obtendrás una comprensión más profunda del proceso de despliegue móvil y las mejores prácticas para utilizar una plataforma de DevOps móvil en la nube para enviar rápidamente a gran escala.
Masterclass de GraphQL en la Nube con Neo4j Aura, Next.js y Vercel
GraphQL Galaxy 2021GraphQL Galaxy 2021
161 min
Masterclass de GraphQL en la Nube con Neo4j Aura, Next.js y Vercel
WorkshopFree
William Lyon
William Lyon
En este masterclass construiremos y desplegaremos una aplicación de GraphQL de pila completa utilizando Next.js, Neo4j y Vercel. Utilizando un grafo de conocimiento de artículos de noticias, primero construiremos una API de GraphQL utilizando las rutas de API de Next.js y la Biblioteca de GraphQL de Neo4j. A continuación, nos enfocaremos en el front-end, explorando cómo utilizar GraphQL para la obtención de datos con una aplicación de Next.js. Por último, exploraremos cómo agregar personalización y recomendación de contenido en nuestra API de GraphQL para servir artículos relevantes a nuestros usuarios, luego desplegaremos nuestra aplicación en la nube utilizando Vercel y Neo4j Aura.

Tabla de contenidos:
- Visión general de Next.js y cómo empezar con Next.js
- Rutas de API con Next.js y construcción de una API de GraphQL
- Utilizando la Biblioteca de GraphQL de Neo4j
- Trabajando con Apollo Client y obtención de datos de GraphQL en Next.js
- Despliegue con Vercel y Neo4j Aura
Construyendo Aplicaciones Serverless en AWS con TypeScript
Node Congress 2021Node Congress 2021
245 min
Construyendo Aplicaciones Serverless en AWS con TypeScript
Workshop
Slobodan Stojanović
Slobodan Stojanović
Este masterclass te enseña los conceptos básicos del desarrollo de aplicaciones serverless con TypeScript. Comenzaremos con una función Lambda simple, configuraremos el proyecto y la infraestructura como código (AWS CDK) y aprenderemos cómo organizar, probar y depurar una aplicación serverless más compleja.
Tabla de contenidos:        - Cómo configurar un proyecto serverless con TypeScript y CDK        - Cómo escribir una función Lambda testeable con arquitectura hexagonal        - Cómo conectar una función a una tabla DynamoDB        - Cómo crear una API serverless        - Cómo depurar y probar una función serverless        - Cómo organizar y hacer crecer una aplicación serverless


Materiales mencionados en el masterclass:
https://excalidraw.com/#room=57b84e0df9bdb7ea5675,HYgVepLIpfxrK4EQNclQ9w
Blog de DynamoDB de Alex DeBrie: https://www.dynamodbguide.com/
Excelente libro para DynamoDB: https://www.dynamodbbook.com/
https://slobodan.me/workshops/nodecongress/prerequisites.html