Texto de pesquisa
Nesta página
Visão geral
Neste guia, você pode aprender como executar uma pesquisa de texto usando Laravel MongoDB.
Você pode usar uma pesquisa de texto para recuperar documentos que contêm um termo ou uma frase em um campo especificado. Um termo é uma sequência de caracteres que exclui caracteres de espaços em branco. Uma frase é uma sequência de termos com qualquer número de caracteres do espaço em branco.
Este guia descreve os métodos do modelo Eloquent que você pode usar para pesquisar texto e fornece exemplos. Para saber mais sobre os modelos Eloquent na integração com o Laravel, consulte a seção Modelos Eloquent.
Antes de começar
Para executar os exemplos de código neste guia, conclua o tutorial Início Rápido . Este tutorial fornece instruções sobre como configurar uma instância do MongoDB Atlas com dados de amostra e criar os seguintes arquivos em seu aplicativo web Laravel:
Movie.php
arquivo, que contém um modeloMovie
para representar documentos na coleçãomovies
MovieController.php
arquivo, que contém uma funçãoshow()
para executar operações do banco de dadosbrowse_movies.blade.php
arquivo, que contém código HTML para exibir os resultados das operações do reconhecimento de data center
As seções a seguir descrevem como editar os arquivos em seu aplicativo Laravel para executar os exemplos de código da operação e visualizar o resultado esperado.
Campos de texto Atlas Search
Antes de executar uma pesquisa de texto, você deve criar um índice de texto no campo com valor de texto. Para saber mais sobre como criar índices, consulte a seção Gerenciar índices do guia Construtor de esquemas.
Você pode executar uma Atlas Search de texto usando o operador $text seguido do campo $search
em seu filtro de query que você passa para o método where()
. O operador $text
executa uma Atlas Search de texto nos campos indexados por texto. O campo $search
especifica o texto para o Atlas Search .
Após construir sua query utilizando o método where()
, encadeie o método get()
para recuperar os resultados da query.
Este exemplo chama o método where()
no modelo Movie
Eloquent para recuperar documentos nos quais o campo plot
contém a frase "love story"
. Para executar esse Atlas Search de texto, a collection deve ter um índice de texto no campo plot
.
Use a seguinte sintaxe para especificar a query:
$movies = Movie::where('$text', ['$search' => '"love story"']) ->get();
Para ver os resultados da query na exibição browse_movies
, edite a função show()
no arquivo MovieController.php
para se assemelhar ao código a seguir:
class MovieController { public function show() { $movies = Movie::where('$text', ['$search' => '"love story"']) ->get(); return view('browse_movies', [ 'movies' => $movies ]); } }
Title: Cafè de Flore Year: 2011 Runtime: 120 IMDB Rating: 7.4 IMDB Votes: 9663 Plot: A love story between a man and woman ... Title: Paheli Year: 2005 Runtime: 140 IMDB Rating: 6.7 IMDB Votes: 8909 Plot: A folk tale - supernatural love story about a ghost ... Title: Por un puèado de besos Year: 2014 Runtime: 98 IMDB Rating: 6.1 IMDB Votes: 223 Plot: A girl. A boy. A love story ... ...
Pontuação de pesquisa
Um texto do Atlas Search atribui uma pontuação numérica de texto para indicar até que ponto cada resultado corresponde à string em seu filtro de query. Você pode classificar os resultados por relevância utilizando o método orderBy()
para classificar no campo de metadados textScore
. Você pode acessar esses metadados usando o operador $meta :
$movies = Movie::where('$text', ['$search' => '"love story"']) ->orderBy('score', ['$meta' => 'textScore']) ->get();
Dica
Para saber mais sobre o método orderBy()
, consulte a seção Classificar Resultados da Query do guia Modificar Saída da Query.
Informações adicionais
Para ver exemplos de código executável que demonstram como realizar operações de localização usando a integração com o Laravel, consulte os seguintes exemplos de uso:
Para saber como recuperar dados com base em critérios de filtro, consulte o guia Recuperar dados.