Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Laravel 5
Code

Cómo configurar una búsqueda de texto completo usando Scout en Laravel

by
Difficulty:IntermediateLength:MediumLanguages:

Spanish (Español) translation by Luis Chiabrera (you can also view the original English article)

La búsqueda de texto es crucial para permitir a los usuarios navegar por sitios web ricos en contenido. En esta publicación, te mostraré cómo implementar la búsqueda de texto completo para una aplicación Laravel. De hecho, usaremos la biblioteca Laravel Scout, que hace que la implementación de la búsqueda de texto completo sea fácil y divertida.

¿Qué es exactamente el Explorador de Laravel? La documentación oficial lo resume así:

Laravel Scout proporciona una solución simple basada en controladores para agregar búsquedas de texto completo a sus modelos Eloquent. Usando observadores modelo, Scout mantendrá automáticamente sus índices de búsqueda sincronizados con sus registros Eloquent.

Básicamente, Laravel Scout es una biblioteca que maneja la manipulación del índice cada vez que hay un cambio en los datos del modelo. El lugar donde se indexarán los datos depende del controlador que haya configurado con la biblioteca Scout.

A partir de ahora, la biblioteca Scout admite Algolia, una API de motor de búsqueda basada en la nube, y eso es lo que usaremos en este artículo para demostrar la implementación de búsqueda de texto completo.

Comenzaremos por instalar las bibliotecas del servidor Scout y Algolia, y a medida que avanzamos vamos a ver un ejemplo del mundo real para demostrar cómo puede indexar y buscar sus datos.

Configuraciones del servidor

En esta sección, vamos a instalar las dependencias que se requieren para hacer que la biblioteca Scout funcione con Laravel. Después de la instalación, tendremos que pasar por un poco de configuración para que Laravel pueda detectar la biblioteca Scout.

Avancemos e instalemos la biblioteca Scout usando Composer.

Eso es prácticamente todo lo que respecta a la instalación de la biblioteca Scout. Ahora que hemos instalado la biblioteca Scout, asegurémonos de que Laravel lo sepa.

Al trabajar con Laravel, probablemente conozca el concepto de proveedor de servicios, que le permite configurar servicios en su aplicación. Por lo tanto, siempre que quiera habilitar un nuevo servicio en su aplicación Laravel, solo necesita agregar una entrada de proveedor de servicio asociado en config / app.php.

Si todavía no está familiarizado con los proveedores de servicios de Laravel, le recomiendo encarecidamente que se haga un favor y lea este artículo introductorio que explica los conceptos básicos de los proveedores de servicios en Laravel.

En nuestro caso, solo necesitamos agregar el proveedor ScoutServiceProvider a la lista de proveedores de servicios en config / app.php, como se muestra en el siguiente fragmento.

Ahora, Laravel conoce el proveedor de servicios ScoutServiceProvider. La biblioteca Scout viene con un archivo de configuración que nos permite establecer credenciales de API.

Avancemos y publiquemos los activos provistos por la biblioteca Scout usando el siguiente comando.

Como puede ver, ha copiado el archivo vendor / laravel / scout / config / scout.php a config / scout.php.

A continuación, continúe y cree una cuenta con Algolia ya que primero necesitaremos credenciales de API. Una vez que tenga la información de la API, continuemos y configuremos los ajustes necesarios en el archivo config / scout.php, como se muestra en el siguiente fragmento.

Tenga en cuenta que hemos establecido el valor de SCOUT_DRIVER como controlador de algolia. Por lo tanto, es necesario que configure los ajustes necesarios para el controlador de Algolia al final del archivo. Básicamente, solo necesitas establecer la id y el secret que tienes de la cuenta de Algolia.

Como puede ver, estamos obteniendo valores de variables de entorno. Así que asegurémonos de establecer correctamente las siguientes variables en el archivo .env.

Finalmente, debemos instalar Algolia PHP SDK, que se usará para interactuar con Algolia usando API. Vamos a instalarlo usando el compositor como se muestra en el siguiente fragmento.

Y con eso, hemos instalado todas las dependencias necesarias para publicar e indexar datos en el servicio de Algolia.

Hacer los modelos indexables y buscables

En la sección anterior, hicimos todo el trabajo para configurar las bibliotecas Scout y Algolia, de modo que pudiéramos indexar y buscar datos mediante el servicio de búsqueda de Algolia.

En esta sección, veremos un ejemplo que demuestra cómo puede indexar los datos existentes y recuperar los resultados de búsqueda de Algolia. Supongo que tiene un modelo de Post predeterminado en su aplicación que usaremos en nuestro ejemplo.

Lo primero que tendremos que hacer es agregar el rasgo de Laravel \ Scout \ Searchable al modelo de Post. Eso hace que el modelo Post se pueda buscar; Laravel sincroniza los registros de publicación con el índice de Algolia cada vez que se agrega, actualiza o elimina el registro de la publicación.

Con eso, ¡el modelo Post es amigable para las búsquedas!

A continuación, nos gustaría configurar los campos que deberían indexarse en primer lugar. Por supuesto, no desea indexar todos los campos de su modelo en Algolia para mantener su efectividad y ligereza. De hecho, la mayoría de las veces, no lo necesitarás.

Puede agregar toSearchableArray en la clase de modelo para configurar los campos que se indexarán.

Ahora, estamos listos para importar e indexar registros de Post existentes en Algolia. De hecho, la biblioteca Scout lo hace fácil al proporcionar el siguiente comando artesanal.

¡Eso debería importar todos los registros del modelo de Post de una sola vez! Se indexan tan pronto como se importan, por lo que ya estamos listos para consultar registros. Continúe y explore el tablero de Algolia para ver los registros importados y otras utilidades.

Cómo funciona en conjunto

En esta sección, crearemos un ejemplo que demuestre cómo realizar búsquedas y operaciones CRUD que se sincronizan en tiempo real con el índice de Algolia.

Continúa y crea la app / Http / Controllers / SearchController.php con los siguientes contenidos.

Por supuesto, también necesitamos agregar las rutas asociadas.

Veamos el método query para ver cómo realizar una búsqueda en Algolia.

Recuerde que hemos hecho que el modelo Post se pueda buscar agregando el rasgo Searchable. Por lo tanto, el modelo Post puede usar el método de Search para recuperar registros del índice de Algolia. En el ejemplo anterior, estamos tratando de obtener registros que coincidan con la palabra clave del title.

Luego, está el método add que imita el flujo de trabajo de agregar un nuevo registro de publicación.

No hay nada sofisticado en el código anterior; solo crea un nuevo registro de publicación usando el modelo Post. Pero el modelo Post implementa el rasgo Searchable, por lo que Laravel hace un trabajo extra esta vez indexando el nuevo registro creado en Algolia. Como puede ver, la indexación se realiza en tiempo real.

Finalmente, está el método Delete. Repasémoslo también.

Como era de esperar, el registro se elimina inmediatamente del índice de Algolia tan pronto como se elimina de la base de datos.

Básicamente, no se requiere un esfuerzo adicional de su parte si desea que los modelos existentes puedan buscarse. Todo lo maneja la biblioteca Scout utilizando observadores modelo.

¡Y eso también nos lleva al final de este artículo!

Conclusión

Hoy, discutimos cómo puede implementar la búsqueda de texto completo en Laravel usando la biblioteca Laravel Scout. En el proceso, pasamos por las instalaciones necesarias y un ejemplo del mundo real para demostrarlo.

¡No dude en preguntar si tiene alguna pregunta o duda usando el feed de comentarios a continuación!

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.