Implementa un buscador inteligente con laravel

En la actualidad, contar con un buscador inteligente en una página web es fundamental para mejorar la experiencia del usuario y facilitar la navegación. Laravel, uno de los frameworks de desarrollo web más populares, nos ofrece una solución para implementar un buscador inteligente en nuestras aplicaciones.

Índice
  1. Beneficios de un buscador inteligente
  2. Instalación de Laravel Scout
  3. Configuración del driver de Laravel Scout
  4. Haciendo modelos Eloquent buscables
  5. Configuración de atributos filtrables y ordenables
  6. Ejemplo de búsqueda de texto completo en Laravel
  7. Consultas habituales
    1. ¿Qué es un buscador inteligente?
    2. ¿Cómo funciona Laravel Scout?
    3. ¿Cuáles son los beneficios de utilizar un buscador inteligente en Laravel?

Beneficios de un buscador inteligente

Antes de adentrarnos en cómo implementar un buscador inteligente con Laravel, es importante comprender los beneficios que este tipo de herramienta puede brindar a nuestros usuarios.

En los sistemas de bases de datos tradicionales, las consultas solo devuelven resultados exactos que coinciden con los criterios especificados. En cambio, un buscador inteligente permite buscar texto en forma parcial o completa, lo que significa que puede proporcionar resultados incluso en caso de coincidencias parciales.

Esto resulta especialmente útil en interfaces de búsqueda para usuarios, ya que les brinda tolerancia a errores ortográficos, búsqueda por prefijos y sinónimos, lo que les permite encontrar resultados de manera más rápida y eficiente. Además, mejora la capacidad de descubrimiento de los usuarios cuando no saben exactamente lo que están buscando.

Instalación de Laravel Scout

Para implementar un buscador inteligente en Laravel, utilizaremos Laravel Scout, una biblioteca que viene incluida en Laravel y nos permite agregar capacidades de búsqueda a nuestras aplicaciones.

Para comenzar, debemos instalar Laravel Scout en nuestro proyecto. Podemos hacer esto ejecutando el siguiente comando en la terminal:

composer require laravel/scout

Una vez instalado, debemos publicar el archivo de configuración de Scout. Esto se puede hacer ejecutando el siguiente comando:

php artisan vendor:publish --provider= laravel\scout\scoutserviceprovider

Este comando creará un nuevo archivo de configuración llamadoscout.phpen el directorioconfigde nuestra aplicación.

Configuración del driver de Laravel Scout

Una vez que hemos instalado Laravel Scout, debemos configurar el driver que utilizaremos para el buscador inteligente. En este caso, utilizaremos Meilisearch, un motor de búsqueda de código abierto construido en Rust que ofrece un rendimiento óptimo en la búsqueda de texto completo.

Primero, debemos instalar las dependencias necesarias para utilizar Scout con Meilisearch. Esto se puede hacer ejecutando el siguiente comando:

composer require meilisearch/meilisearch-php http-interop/http-factory-guzzle

A continuación, debemos actualizar las variables de entorno en nuestro archivo.envpara indicar a Laravel que utilizaremos Meilisearch como driver de Scout. Las variables a actualizar son las siguientes:

  • SCOUT_DRIVER=meilisearch
  • MEILISEARCH_HOST=http://meilisearch:7700
  • MEILISEARCH_KEY=masterKey

Es importante destacar que si estamos utilizando el entorno de desarrollo de Laravel Sail, el host de Meilisearch seráhttp://meilisearch:7700. Para casos de uso en producción, se recomienda utilizar Meilisearch Cloud y obtener la URL del host en la configuración del proyecto.

Haciendo modelos Eloquent buscables

Una vez que hemos configurado Scout y el driver de Meilisearch, debemos hacer que nuestros modelos Eloquent sean buscables. Para ello, debemos agregar el traitLaravel\Scout\Searchableen nuestros modelos.

Aquí hay un ejemplo de un modelo llamadoContacto:

<?phpnamespace App\Models;use Illuminate\Database\Eloquent\Model;use Laravel\Scout\Searchable;class Contacto extends Model{ use Searchable;}

Además de agregar el trait, podemos utilizar el métodotoSearchableArrayen nuestros modelos para especificar qué campos queremos almacenar en Meilisearch. Esto nos permite almacenar datos del modelo y sus relaciones en el mismo documento.

Aquí hay un ejemplo de cómo almacenar datos de relaciones en Meilisearch:

<?phpnamespace App\Models;use Illuminate\Database\Eloquent\Model;use Laravel\Scout\Searchable;class Contacto extends Model{ use Searchable; public function empresa() { return $this->belongsTo(Empresa::class); } public function toSearchableArray() { $array = $this->toArray(); $array['id_empresa'] = $this->empresa->id; $array['nombre_empresa'] = $this->empresa->nombre; $array['url_empresa'] = $this->empresa->url; return $array; }}

Configuración de atributos filtrables y ordenables

Meilisearch nos permite realizar filtrado y ordenamiento avanzado en los resultados de búsqueda. Podemos configurar qué atributos son filtrables y ordenables en la configuración del índice de Meilisearch.

Para hacer esto, debemos actualizar el archivoscout.phpen el directorioconfigde nuestra aplicación. Aquí hay un ejemplo de cómo configurar los atributos filtrables y ordenables para el modeloContacto:

<?phpuse App\Models\Contacto;return [ // otras configuraciones... 'meilisearch' => [ 'host' => env('MEILISEARCH_HOST', 'http://localhost:7700'), 'key' => env('MEILISEARCH_KEY'), 'index-settings' => [ Contacto::class => [ 'filterableAttributes' => ['id_empresa'], 'sortableAttributes' => ['nombre', 'nombre_empresa'], ], ], ],];

Una vez que hemos actualizado la configuración del índice de Meilisearch, debemos sincronizar los cambios ejecutando el siguiente comando:

php artisan scout:sync-index-settings

Ejemplo de búsqueda de texto completo en Laravel

Para ver en acción un buscador inteligente implementado con Laravel, podemos consultar el repositorio de una aplicación de demostración que muestra cómo realizar una búsqueda en todo el sistema de una aplicación de gestión de relaciones con los clientes (CRM).

buscador inteligente laravel - Qué es Laravel Scout

Esta aplicación de demostración utiliza las siguientes características de búsqueda:

  • Búsqueda en múltiples modelos
  • Filtrado y ordenamiento avanzado
  • Resultados en tiempo real

El código fuente de esta aplicación de demostración está disponible en Github:

https://github.com/meilisearch/saas-demo

Esperamos que esta tutorial te haya ayudado a comprender la importancia de un buscador inteligente y cómo implementarlo en Laravel. Para obtener más información, te recomendamos leer la documentación oficial de Laravel Scout y Meilisearch.

Meilisearch es un motor de búsqueda de código abierto con una experiencia de desarrollo intuitiva para construir búsquedas para los usuarios. Puedes alojarlo tú mismo o obtener una experiencia premium con Meilisearch Cloud.

Para obtener más información sobre Meilisearch, puedes unirte a la comunidad en Discord o suscribirte al boletín. También puedes conocer más sobre el producto consultando la hoja de ruta y participando en las discusiones sobre el producto.

Consultas habituales

¿Qué es un buscador inteligente?

Un buscador inteligente es una herramienta que permite buscar texto en forma parcial o completa en una base de datos. A diferencia de las consultas tradicionales, un buscador inteligente puede proporcionar resultados incluso en caso de coincidencias parciales o errores ortográficos.

¿Cómo funciona Laravel Scout?

Laravel Scout es una biblioteca incluida en el framework Laravel que agrega capacidades de búsqueda a nuestras aplicaciones. Utiliza drivers de búsqueda como Meilisearch para realizar búsquedas en texto completo y ofrece funcionalidades avanzadas como filtrado y ordenamiento.

¿Cuáles son los beneficios de utilizar un buscador inteligente en Laravel?

Utilizar un buscador inteligente en Laravel tiene varios beneficios. Por un lado, mejora la experiencia del usuario al permitirle encontrar resultados más rápidamente y brindar tolerancia a errores ortográficos. Además, facilita el descubrimiento de contenido cuando los usuarios no saben exactamente lo que están buscando.

Implementar un buscador inteligente en una aplicación web es esencial para mejorar la experiencia del usuario y facilitar la navegación. Laravel Scout nos brinda una solución sencilla y potente para agregar capacidades de búsqueda en texto completo a nuestras aplicaciones Laravel. Con esta herramienta, podemos ofrecer a nuestros usuarios resultados precisos y relevantes, incluso en caso de coincidencias parciales o errores ortográficos.

Si quieres conocer otras notas parecidas a Implementa un buscador inteligente con laravel puedes visitar la categoría Inteligencia.

Subir