notifications Notificaciones

Marcar todas como leídas

Ver más

lightbulb_outline

Integrar algolia en laravel

timer 3 Min.

remove_red_eye 783

calendar_today

En este tutorial aprenderemos a integrar algolia como nuestro search engine, para hacer busquedas de nuestro registros.

Para comenzar lo que necesitaremos es crear una cuenta en algolia, esta cuenta tendrá 15 días de prueba, y no tenemos que agregar ningún método de pago.

Una vez que nos hemos registrado y confirmado nuestro correo vamos a proceder a instalar laravel scout el cuál será el encagador de realizar todas la operaciones de busqueda, indexación etc.

Entonces procedemos a instalar este paquete con el siguiente comando.

composer require laravel/scout

Como siguiente paso vamos a exponer la configuración de scout para ello ejecutamos.

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

Como siguiente paso nos dirigimos a apis, y procedemos a copiar el "Application ID" y "Admin API Key", y dentro de nuestro archivo .env procedemos a definir 2 nuevas variables.

ALGOLIA_APP_ID=YI21IYCVLD
ALGOLIA_SECRET=5016fe174f303482212b7baa65bf48eb

Como último paso en configuración vamos a instalar el paquete para consumir la api de algolia, para ello podemos usar al paquete algolia/algoliasearch-client-php.

composer require algolia/algoliasearch-client-php:^2.2

Con estos pasos ya tenemos todo listo para comenzar a realizar busquedas con algolia.

Configuración modelos

Para poder hacer uso de algolia lo primero que tenemos que definir sobre que modelos queremos hacer la busqueda. Una vez que ya tenemos identificado a nuestro modelo tenemos que agregar el trait Searchable, que se encuentra en el namesapce Laravel\Scout\Searchable.

Nuesto modelo se vería de la siguiente manera.

use Laravel\Scout\Searchable;

class Article extends Model
{
    use Searchable;
    protected $fillable = ['title','content'];
}

Indexables

Para poder trabajar con algolia lo que tenemos que hacer es indexar a nuestro registros, esto lo podemos hacer de muchas formas, la forma más fácil es simplemente crear un nuevo registro de eloquent.

Article::create(['title' => 'lorem isu', 'content' => 'lorem ipsum dolor sit amet'])

Si ahora vamos a browser y elegimos el nombre de nuestro módelo veremos que tenemos creado un nuevo registro en algolia. Tenemos a nuestro registro indexado.

Esto sucede ya que anteriormente agregamos al trait Searchable a nuestro modelo.

Ahora bien que pasa si nostros ya tenemos registros creados, para esto lo que podemos hacer es ir nuestra terminal la carpeta del proyecto y ejecutar.

php artisan scout:import "App\MODEL_NAME"

Donde MODEL_NAME es el nombre del modelo que quiere usar.

Si ahora vamos nuevamente a browser veremos que tenemos registrado a todos nuestro registros.

Y si ahora queremos eliminar a nuestro regristros podemos ejecutar.

php artisan scout:flush "App\MODEL_NAME"

Algo que notamos es que tenemos indexados todos los attributos de nuestro modelo, para cambiar este comportamiento y unicamente registrar que elementos necesitamos, podemos sobrescribir el método toSearchableArray en nuestro modelo.

public function toSearchableArray()
{
    return [
        'title' => $this->title
    ];
}

Si ahora volvemos a ejecutar.

php artisan scout:import "App\MODEL_NAME"

Y si ahora vamos nuevamente a browser, veremos que ahora nuestro registros sólo contiene a los campos que especificamos.

Realizando busquedas

Para realizar busquedas nos podemos apoyar del método search que scout agrega por nosotros.

Model::search('Star Trek')->get();

Donde Model es el nombre del modelo que configuraste.

Esto nos devuelve los resultado que hagan match con el string que pasemos de parametro.

Otros artículos del blog

Comunidad