Atlas Search
Nesta página
Visão geral
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 .
Índice de Pesquisa do Atlas
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 .
Estágio de agregação de pesquisa
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:
Crie uma instância
Pipeline
para armazenar os estágios do pipeline.Chame o método
Stage::search()
para criar o estágio Atlas Search .Dentro do corpo do método
search()
, use métodos da classe de construtoresSearch
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(...) */ ), );
Exemplos de query do Atlas Search
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
.
Query composta com filtro
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 camponame
a string"kitchen"
Inclui uma cláusula
should
para classificar altamente documentos em que o campocuisine
inclui"american"
Inclui um campo
filter
para incluir somente documentos em que o valorborough
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
Query de preenchimento automático
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 |
---|---|---|
| Permite a pesquisa difusa e as opções de pesquisa difusa |
|
| Especifica a ordem na qual pesquisar tokens |
|
Para aprender mais sobre esses parâmetros, consulte a seção Opções da referência do operador autocomplete
na documentação do Atlas.
opções de pesquisa
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 |
---|---|---|
|
| Fornece o nome do índice de pesquisa do Atlas Search a ser usado |
|
| Especifica as opções de realce para exibir os termos de pesquisa em seu contexto original |
|
| Paraleliza a query de pesquisa entre segmentos em nós de pesquisa dedicados |
|
| Especifica as opções de contagem para recuperar uma contagem dos resultados |
|
| Especifica um ponto de referência para retornar documentos que começam imediatamente após esse ponto |
|
| Especifica um ponto de referência para retornar documentos que começam imediatamente antes desse ponto |
|
| Especifica se um detalhamento da pontuação para os resultados deve ser recuperado |
|
| Especifica os campos nos quais classificar os resultados |
|
| 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 |
|
| 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.