Menu Docs
Página inicial do Docs
/ / /
Manual da Biblioteca PHP
/

Atlas Search

Nesta página

  • Visão geral
  • Índice de Pesquisa do Atlas
  • Estágio de agregação de pesquisa
  • Exemplos de query do Atlas Search
  • Query composta com filtro
  • Query de preenchimento automático
  • opções de pesquisa

Neste guia, você pode aprender como realizar pesquisas em seus documentos usando o recurso Atlas Search. A biblioteca PHP permite que você execute queries de pesquisa do Atlas usando o construtor de agregação.

Observação

Compatibilidade de implantação

Você pode usar a funcionalidade Atlas Search somente quando se conectar a MongoDB Atlas clusters. Esta funcionalidade não está disponível para implementações autogerenciadas.

Para aprender mais sobre o Atlas Search, consulte a Visão geral do Atlas Search. A implementação do Atlas Search para a biblioteca PHP utiliza internamente o operador de agregação $search para executar consultas. Para aprender mais sobre este operador, consulte a referência de $search na documentação do Atlas.

Observação

Atlas Vector Search

Para realizar pesquisas sobre incorporações vetoriais no MongoDB, você pode usar a API Atlas Vector Search . Para saber mais sobre esse recurso, consulte o guia Atlas Vector Search .

Antes de executar queries do Atlas Search , você deve criar um índice do Atlas Search em sua collection. Para saber mais sobre como criar esse tipo de índice, consulte o guia Índices de Atlas Search .

Importe as seguintes classes para o seu aplicação para executar queries do Atlas Search usando o Aggregation Builder:

use MongoDB\Builder\Pipeline;
use MongoDB\Builder\Search;
use MongoDB\Builder\Stage;

Para criar um estágio $search em seu pipeline de agregação , execute as seguintes ações:

  1. Crie uma instância Pipeline para armazenar os estágios do pipeline.

  2. Chame o método Stage::search() para criar o estágio Atlas Search .

  3. Dentro do corpo do método search(), use métodos da classe de construtores Search para construir seus critérios da query de pesquisa.

O seguinte código demonstra o modelo para construir queries básicas do Atlas Search :

$pipeline = new Pipeline(
Stage::search(
/* Atlas Search query specifications
Search::compound(...) */
),
);

Nesta seção, você pode aprender a executar diferentes tipos de queries de pesquisa do Atlas Search usando o construtor de agregação. Os exemplos nesta seção usam dados de amostra da coleção sample_restaurants.restaurants.

Utilize o método Search::compound() para unir dois ou mais operadores em uma única query. Este método aceita argumentos nomeados para suas cláusulas, como must e filter. Em cada cláusula, utilize o método Search::text() para especificar as cadeias de caracteres a serem procuradas ao realizar a pesquisa de texto completo.

Este exemplo realiza uma query de pesquisa do Atlas Search com as seguintes especificações:

  • Inclui uma cláusula must para pesquisar no campo name a string "kitchen"

  • Inclui uma cláusula should para classificar altamente documentos em que o campo cuisine inclui "american"

  • Inclui um campo filter para incluir somente documentos em que o valor borough seja "Queens" nos resultados

$pipeline = new Pipeline(
Stage::search(
Search::compound(
must: [
Search::text(
query: 'kitchen',
path: 'name',
),
],
should: [
Search::text(
query: 'american',
path: 'cuisine',
),
],
filter: [
Search::text(
query: 'Queens',
path: 'borough',
),
],
),
),
Stage::project(
borough: 1,
cuisine: 1,
name: 1
),
Stage::limit(3)
);
$cursor = $collection->aggregate($pipeline);
foreach ($cursor as $doc) {
echo json_encode($doc), PHP_EOL;
}
{"_id":...,"borough":"Queens","cuisine":"American","name":"Kitchen Door"}
{"_id":...,"borough":"Queens","cuisine":"American","name":"Cc Kitchen"}
{"_id":...,"borough":"Queens","cuisine":"American","name":"Suite Kitchen"}
// Results truncated

A biblioteca PHP oferece o método Search::autocomplete() para executar pesquisas de preenchimento automático em documentos nas suas coleções.

Para aprender mais sobre esse tipo de query do Atlas Search, consulte a referência de preenchimento automático na documentação do Atlas.

Observação

Seu índice de pesquisa do Atlas Search deve ser configurado para consultas de preenchimento automático. Para saber mais, consulte Como indexar campos para preenchimento automático na documentação do Atlas.

O código a seguir executa uma query de preenchimento automático do Atlas Search para a string "Lucy" no campo name:

$pipeline = new Pipeline(
Stage::search(
Search::autocomplete(
query: 'Lucy',
path: 'name',
),
),
Stage::limit(3),
Stage::project(_id: 0, name: 1),
);
$cursor = $collection->aggregate($pipeline);
foreach ($cursor as $doc) {
echo json_encode($doc), PHP_EOL;
}
{"name":"Juicy Lucy"}
{"name":"Lucy'S Vietnamese Kitchen"}
{"name":"Lucy'S Cantina Royale"}
// Results Truncated

Você também pode passar os seguintes parâmetros opcionais para o método autocomplete() para customizar a query:

Parâmetro opcional
Descrição
Valor padrão

fuzzy

Permite a pesquisa difusa e as opções de pesquisa difusa

false

tokenOrder

Especifica a ordem na qual pesquisar tokens

'any'

Para aprender mais sobre esses parâmetros, consulte a seção Opções da referência do operador autocomplete na documentação do Atlas.

Você pode usar o método search() para executar diversos tipos de queries de pesquisa do Atlas Search. Dependendo da consulta que você deseja, é possível passar os seguintes parâmetros opcionais para search():

Parâmetro opcional
Tipo
Descrição

index

string

Fornece o nome do índice de pesquisa do Atlas Search a ser usado

highlight

array

Especifica as opções de realce para exibir os termos de pesquisa em seu contexto original

concurrent

bool

Paraleliza a query de pesquisa entre segmentos em nós de pesquisa dedicados

count

string

Especifica as opções de contagem para recuperar uma contagem dos resultados

searchAfter

string

Especifica um ponto de referência para retornar documentos que começam imediatamente após esse ponto

searchBefore

string

Especifica um ponto de referência para retornar documentos que começam imediatamente antes desse ponto

scoreDetails

bool

Especifica se um detalhamento da pontuação para os resultados deve ser recuperado

sort

array

Especifica os campos nos quais classificar os resultados

returnStoredSource

bool

Especifica se deve ser realizada uma pesquisa completa de documentos no banco de dados de backend ou se devem ser retornados apenas os campos de origem armazenados diretamente do Atlas Search

tracking

array

Especifica a opção de rastreamento para recuperar informações de análise sobre os termos de pesquisa

Para saber mais sobre esses parâmetros, consulte a seção Campos da referência do operador $search na documentação do Atlas.

Voltar

aggregation de dados