Inicio > Desarrollo Web > Tutoriales de Laravel > Cómo integrar Typesense en Laravel fácilmente

Cómo integrar Typesense en Laravel fácilmente

Diego Cortés
Diego Cortés
January 20, 2025
Cómo integrar Typesense en Laravel fácilmente

En el desarrollo de aplicaciones web, contar con una herramienta de búsqueda eficiente puede marcar la diferencia en la experiencia del usuario. Typesense es un motor de búsqueda orientado a documentos que ofrece velocidad y facilidad de uso. En este artículo, te presentamos una guía paso a paso para integrar Typesense en tu aplicación Laravel sin complicaciones.

¿Qué es Typesense?

Typesense es un motor de búsqueda de código abierto que permite realizar búsquedas rápidas y relevantes en grandes volúmenes de datos. Su objetivo es proporcionar una API de búsqueda simple y rápida, ideal para aplicaciones que necesitan manejos eficientes de datos. Esto lo convierte en una opción atractiva para desarrolladores que buscan optimizar la experiencia de búsqueda en sus aplicaciones web.

Requisitos previos

Antes de comenzar, asegúrate de tener instalado lo siguiente:

  • Laravel: La versión que estés utilizando.
  • Composer: Para gestionar las dependencias de PHP.
  • Typesense: Puedes optar por usar una instalación local o utilizar un servicio en la nube.

Instalación de Typesense

Para integrar Typesense en Laravel, primero debes instalar el paquete de PHP de Typesense. Abre la terminal y ejecuta el siguiente comando:

composer require typesense/typesense-php

Esto descargará e instalará el paquete necesario para que tu aplicación pueda comunicarse con Typesense.

Configuración de Typesense

Ahora que tienes instalado el paquete, es momento de configurar el cliente de Typesense. Dirígete al archivo .env de tu proyecto Laravel y agrega las siguientes variables:

TYPESENSE_API_KEY=tu_api_key
TYPESENSE_HOST=localhost
TYPESENSE_PORT=8108
TYPESENSE_PROTOCOL=http

Asegúrate de reemplazar tu_api_key con la clave de API que hayas configurado en tu servidor Typesense.

Para crear una instancia del cliente a nivel de aplicación, puedes hacerlo en uno de tus archivos de configuración o crear un nuevo archivo TypesenseServiceProvider.php en la carpeta app/Providers.

// app/Providers/TypesenseServiceProvider.php
namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Typesense\Client;

class TypesenseServiceProvider extends ServiceProvider
{
    public function register()
    {
        $this->app->singleton(Client::class, function ($app) {
            return new Client([
                'api_key' => env('TYPESENSE_API_KEY'),
                'nodes' => [
                    [
                        'host' => env('TYPESENSE_HOST'),
                        'port' => env('TYPESENSE_PORT'),
                        'protocol' => env('TYPESENSE_PROTOCOL'),
                    ]
                ],
                'connection_timeout_seconds' => 2, // El tiempo de espera en segundos
            ]);
        });
    }
}

Recuerda registrar tu proveedor de servicio en el archivo config/app.php en la sección de providers.

Creación de un índice

Una vez que tengas tu cliente configurado, ahora puedes crear un índice. Esto se puede hacer en un controlador. A continuación se muestra un ejemplo básico de cómo crear un índice para tus datos.

use Typesense\Client;

public function createIndex(Client $client)
{
    $client->collections->create([
        'name' => 'productos',
        'fields' => [
            ['name' => 'nombre', 'type' => 'string', 'facet' => false],
            ['name' => 'precio', 'type' => 'float', 'facet' => false],
            ['name' => 'categoria', 'type' => 'string', 'facet' => true],
        ],
    ]);
}

Indexando documentos

Con el índice creado, el siguiente paso es indexar tus documentos. Para esto, puedes crear un array y enviarlo al índice que acabas de crear.

public function indexDocuments(Client $client)
{
    $client->collections['productos']->documents->create([
        'id' => '1',
        'nombre' => 'Product 1',
        'precio' => 100.0,
        'categoria' => 'Electrónica',
    ]);
}

Realizando búsquedas

Finalmente, puedes realizar búsquedas en tu índice utilizando el siguiente código:

$results = $client->collections['productos']->documents->search('Product');

Esto retornará los documentos que coincidan con tu consulta.

Conclusión

Integrar Typesense en tu aplicación Laravel es un proceso sencillo y te permitirá mejorar la experiencia de búsqueda para tus usuarios. Si deseas conocer más sobre temas relacionados o explorar otras implementaciones, te invito a seguir leyendo más noticias y tutoriales en mi blog.

Diego Cortés
Diego Cortés
Full Stack Developer, SEO Specialist with Expertise in Laravel & Vue.js and 3D Generalist

Categorías

Page loaded in 22.41 ms