¡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.

8 min
14 Apr, 2023

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.

Available in English

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

GraphQL Galaxy 2022GraphQL Galaxy 2022
31 min
Your GraphQL Groove
Building with GraphQL for the first time can be anywhere between daunting and easy-peasy. Understanding which features to look for in your client-side and server-side tooling and getting into the right habits (and ridding yourself of old habits) is the key to succeed with a team of any size in GraphQL.

This talk gives an overview of common struggles I've seen numerous teams have when building with GraphQL, how they got around common sources of frustration, and the mindset they eventually adopted, and lessons learned, so you can confidently stick with and adopt GraphQL!
DevOps.js Conf 2024DevOps.js Conf 2024
25 min
Atomic Deployment for JS Hipsters
Deploying an app is all but an easy process. You will encounter a lot of glitches and pain points to solve to have it working properly. The worst is: that now that you can deploy your app in production, how can't you also deploy all branches in the project to get access to live previews? And be able to do a fast-revert on-demand?Fortunately, the classic DevOps toolkit has all you need to achieve it without compromising your mental health. By expertly mixing Git, Unix tools, and API calls, and orchestrating all of them with JavaScript, you'll master the secret of safe atomic deployments.No more need to rely on commercial services: become the perfect tool master and netlifize your app right at home!

Workshops on related topic

DevOps.js Conf 2024DevOps.js Conf 2024
163 min
AI on Demand: Serverless AI
Top Content
Featured WorkshopFree
In this workshop, we discuss the merits of serverless architecture and how it can be applied to the AI space. We'll explore options around building serverless RAG applications for a more lambda-esque approach to AI. Next, we'll get hands on and build a sample CRUD app that allows you to store information and query it using an LLM with Workers AI, Vectorize, D1, and Cloudflare Workers.
JSNation 2023JSNation 2023
104 min
Build and Deploy a Backend With Fastify & Platformatic
WorkshopFree
Platformatic allows you to rapidly develop GraphQL and REST APIs with minimal effort. The best part is that it also allows you to unleash the full potential of Node.js and Fastify whenever you need to. You can fully customise a Platformatic application by writing your own additional features and plugins. In the workshop, we’ll cover both our Open Source modules and our Cloud offering:- Platformatic OSS (open-source software) — Tools and libraries for rapidly building robust applications with Node.js (https://oss.platformatic.dev/).- Platformatic Cloud (currently in beta) — Our hosting platform that includes features such as preview apps, built-in metrics and integration with your Git flow (https://platformatic.dev/). 
In this workshop you'll learn how to develop APIs with Fastify and deploy them to the Platformatic Cloud.
GraphQL Galaxy 2021GraphQL Galaxy 2021
161 min
Full Stack GraphQL In The Cloud With Neo4j Aura, Next.js, & Vercel
WorkshopFree
In this workshop we will build and deploy a full stack GraphQL application using Next.js, Neo4j, and Vercel. Using a knowledge graph of news articles we will first build a GraphQL API using Next.js API routes and the Neo4j GraphQL Library. Next, we focus on the front-end, exploring how to use GraphQL for data fetching with a Next.js application. Lastly, we explore how to add personalization and content recommendation in our GraphQL API to serve relevant articles to our users, then deploy our application to the cloud using Vercel and Neo4j Aura.

Table of contents:
- Next.js overview and getting started with Next.js
- API Routes with Next.js & building a GraphQL API
- Using the Neo4j GraphQL Library
- Working with Apollo Client and GraphQL data fetching in Next.js
- Deploying with Vercel and Neo4j Aura
React Summit 2023React Summit 2023
88 min
Deploying React Native Apps in the Cloud
WorkshopFree
Deploying React Native apps manually on a local machine can be complex. The differences between Android and iOS require developers to use specific tools and processes for each platform, including hardware requirements for iOS. Manual deployments also make it difficult to manage signing credentials, environment configurations, track releases, and to collaborate as a team.
Appflow is the cloud mobile DevOps platform built by Ionic. Using a service like Appflow to build React Native apps not only provides access to powerful computing resources, it can simplify the deployment process by providing a centralized environment for managing and distributing your app to multiple platforms. This can save time and resources, enable collaboration, as well as improve the overall reliability and scalability of an app.
In this workshop, you’ll deploy a React Native application for delivery to Android and iOS test devices using Appflow. You’ll also learn the steps for publishing to Google Play and Apple App Stores. No previous experience with deploying native applications is required, and you’ll come away with a deeper understanding of the mobile deployment process and best practices for how to use a cloud mobile DevOps platform to ship quickly at scale.
Node Congress 2021Node Congress 2021
245 min
Building Serverless Applications on AWS with TypeScript
Workshop
This workshop teaches you the basics of serverless application development with TypeScript. We'll start with a simple Lambda function, set up the project and the infrastructure-as-a-code (AWS CDK), and learn how to organize, test, and debug a more complex serverless application.
Table of contents:        - How to set up a serverless project with TypeScript and CDK        - How to write a testable Lambda function with hexagonal architecture        - How to connect a function to a DynamoDB table        - How to create a serverless API        - How to debug and test a serverless function        - How to organize and grow a serverless application


Materials referred to in the workshop:
https://excalidraw.com/#room=57b84e0df9bdb7ea5675,HYgVepLIpfxrK4EQNclQ9w
DynamoDB blog Alex DeBrie: https://www.dynamodbguide.com/
Excellent book for the DynamoDB: https://www.dynamodbbook.com/
https://slobodan.me/workshops/nodecongress/prerequisites.html
React Summit 2022React Summit 2022
107 min
Serverless for React Developers
WorkshopFree
Intro to serverlessPrior Art: Docker, Containers, and KubernetesActivity: Build a Dockerized application and deploy it to a cloud providerAnalysis: What is good/bad about this approach?Why Serverless is Needed/BetterActivity: Build the same application with serverlessAnalysis: What is good/bad about this approach?