Symfony 4. Integrando el servicio de búsquedas Algolia

Todo lo que debes saber para integrar Algolia en un proyecto desarrollado con Symfony 4

Image for post
Image for post
Integrando Algolia en un proyecto con Symony 4

Cosas interesantes

¿Cuanto cuesta Algolia?

¿Qué es un índice y un registro?

Normalizer

composer require symfony/serializer
serializer: { enable: true }

Instalación

composer require algolia/search-bundle
...Algolia\SearchBundle\AlgoliaSearchBundle::class => [‘all’ => true]

Configuración

algolia_search:    prefix: '%env(APP_ENV)%_'

Indexando los primeros datos

algolia_search:
indices:
- name: posts
class: App\Entity\Post
enable_serializer_groups: true
<?php

namespace App\Entity;

use Symfony\Component\Serializer\Annotation\Groups;

class Post
{

/**
* @Groups({"searchable"})
*/
public function getTitle(): ?string
{
return $this->title;
}

/**
* @Groups({"searchable"})
*/
public function getBody(): ?string
{
return $this->body;
}

}
php bin/console search:import
php bin/console search:clear

Realizando búsquedas

Image for post
Image for post
Image for post
Image for post
$posts = $this->indexManager->rawSearch('query', Post::class);

Indexando automáticamente

algolia_search:
doctrineSubscribedEvents: ['postPersist']

Trucos

Modificar el número de elementos enviados o borrados

algolia_search:
batchSize: 250

Trabajando en local

algolia_search:
doctrineSubscribedEvents: []

Indexando de forma condicional

algolia_search:
indices:
- name: posts
class: App\Entity\Post
index_if: isPublished

Paginar resultados

$posts = $this->indexManager->search('text to search', Post::class, $em, $pageNumber, $numberOfResults);

Conclusión

Since Algolia only supports prefix search, what you need to do to is add an attribute that contains all the possible suffixes for product_reference, as an array:

¿Quieres recibir más artículos como este?

Entre paseo y paseo con Simba desarrollo en Symfony y React

Get the Medium app