Full Text Search com Laravel, Scout e Algolia \| TreinaWeb               Promoção no ar   Matricule-se agora e garanta **54% de desconto**  

  Termina em   Tempo restante da oferta: 14 Horas 

 51 Min 

 31 Seg 

   Tempo restante da oferta: 14 51 31 

  [Assinar →](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26) 

   [                ](https://www.treinaweb.com.br)  Explorar  

 [ Quanto custa? ](#assinatura) [ FAQ ](https://www.treinaweb.com.br#faq) [Matricule-se](#assinatura) [ Entrar ](https://www.treinaweb.com.br/login) 

     [ Início ](https://www.treinaweb.com.br) [ Artigos ](https://www.treinaweb.com.br/blog) Full Text Search com Laravel, Scout e Algolia  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

# Full Text Search com Laravel, Scout e Algolia

 Aprenda como realizar buscas textuais rápidas e eficientes independentemente da quantidade de registros, campos ou tamanhos de textos.

 [ Elton Fonseca ](https://www.treinaweb.com.br/blog/autor/elton-fonseca) 10 anos atrás

  ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/05/busca-laravel-scout-algolia.jpg)  

Realizar buscas em textos é algo que a maioria dos bancos de dados não fazem muito bem (com eficiência). Isso fica ainda pior quando temos que buscar em vários campos com muitas informações. O problema é que esse tipo de situação é cada vez mais comum nos sistemas, devido a diminuição no valor do armazenamento, maior presença das pessoas online e outros fatores.

Baseado nisso, existem algumas soluções que ajudam a resolver essa demanda. Basicamente elas consistem em carregar esses dados para índices e usar algoritmos específicos para esse tipo de busca. Existem alguns softwares que podem ser instalados diretamente no seu servidor como o Apache Solr, Elasticsearch etc, também existem algumas aplicações SaaS que fazem esse “trabalho sujo” e que disponibiliza uma API para se comunicar com o seu software, como é o caso do Algolia e searchly.

## Laravel Scout

O Scout é um package para [Laravel](https://www.treinaweb.com.br/blog/o-que-e-laravel/ "Laravel") que adiciona aos models do Eloquent a possibilidade de usar mecanismos de busca de forma fácil. Ele usa model observers para manter os índices do serviço de busca sempre atualizado.

Esse package trabalha com conceito de driver, um driver é a interface que o Scout usa para se comunicar como serviço de busca. Por padrão, até o momento, o único driver que ele possui nativamente é para trabalhar com o Algolia, porém, existe uma certa facilidade na criação de outros drivers.

## Instalação do Scout

Para instalar o package precisamos primeiro adicionar a dependência ao composer:

```json
composer require laravel/scout  

```

Agora, precisamos registrar o provider, acesse o arquivo de configuração `config/app.php` e adicione no array `providers`:

```php
Laravel\Scout\ScoutServiceProvider::class,  

```

Para finalizar, vamos executar o comando para copiar o arquivo de configuração do Scout para dentro da pasta `config` do projeto:

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

```

## Criando a conta no Algolia

Para usar o Algolia é necessário uma conta no serviço e também um aplicativo criado dentro dele. Para criar uma nova conta, [clique aqui](https://www.algolia.com/users/sign_up). Após logado, você deve ir no item `APPS` e criar uma nova aplicação:

![planos do algolia](https://d2m498l008ebpa.cloudfront.net/2017/02/1-planos-algolia.png)

O valor da mensalidade é cobrado baseado na quantidade de operações que você faz por mês e quantidade de registros cadastrados. Qualquer interação como (busca, criação, atualização e exclusão) são consideradas operações. No plano gratuito são permitidas 100.000 iterações e 10.000 registros.

Na tela principal do aplicativo temos um item de menu chamado **API Keys**:

![tela de chaves do algolia](https://d2m498l008ebpa.cloudfront.net/2017/02/2-acesso-as-chaves-de-api-algolia.png)

## Configurando o Scout

Se olhar dentro do arquivo de configuração do `config/scout.php` verá que o driver padrão dele é Algolia e que é necessário configurar os dados da API:

```php
'driver' => env('SCOUT_DRIVER', 'algolia'),  
'algolia' => [  
    'id' => env('ALGOLIA_APP_ID', ''),
    'secret' => env('ALGOLIA_SECRET', ''),
 ],

```

No arquivo `.env` da sua aplicação adicione as seguintes configurações:

```
ALGOLIA_APP_ID=O application Id copiado do site  
ALGOLIA_SECRET=Admin API Key copiado do site  

```

Como no arquivo de configuração ele está obtendo do `.env`, ele usará essas configurações para o Scout se conectar ao Algolia

Após adicionar essas informações, é necessário instalar um package que o Scout utiliza para trabalhar com o Algolia:

```
composer require algolia/algoliasearch-client-php  

```

## Indicando um “model buscável”

Após instalarmos e configurarmos o Scout, precisamos indicar quais models serão indexados. Para isso, basta adicionar uma trait no model:

```php
