Overview
En esta guía, puedes aprender cómo ejecutar una text query utilizando Laravel MongoDB.
Puedes utilizar una text query para recuperar documentos que contengan un término o una frase en un campo específico. Un término es una secuencia de caracteres que excluye los caracteres de espacio en blanco. Una frase es una secuencia de términos con cualquier número de caracteres de espacio en blanco.
Esta guía describe los métodos del modelo Eloquent que puede utilizar para buscar texto y proporciona ejemplos. Para obtener más información sobre los modelos Eloquent en la Integración de Laravel, consulte el Eloquent Models section.
Before You Get Started
Para ejecutar los ejemplos de código en esta guía, completa el tutorial de Inicio Rápido. Este tutorial proporciona instrucciones para configurar una instancia de MongoDB Atlas con datos de muestra y crear los siguientes archivos en su aplicación web Laravel:
Movie.phparchivo, que contiene un modeloMoviepara representar documentos en la colecciónmoviesMovieController.phparchivo, que contiene una funciónshow()para ejecutar operaciones de base de datosbrowse_movies.blade.phpfile, which contains HTML code to display the results of database operations
Las siguientes secciones describen cómo editar los archivos de tu aplicación Laravel para ejecutar los ejemplos de código de operaciones de búsqueda y ver la salida esperada.
Búsqueda de campos de texto
Antes de poder realizar una query de texto, debe crear un índice de texto en el campo valorado en texto. Para obtener más información sobre cómo crear índices, consulte la sección Gestionar índices de la guía de creador/esquema.
Puedes realizar una consulta de texto usando el operador $text seguido del campo $search en el filtro de query que pasas al método where(). El operador $text realiza una query de texto sobre los campos indexados por texto. El campo $search especifica el texto a buscar.
After building your query by using the where() method, chain the get() method to retrieve the query results.
Este ejemplo llama al método where() en el modelo de Eloquent Movie para recuperar documentos en los que el campo plot contiene la frase "love story". Para realizar esta text query, la colección debe tener un índice de texto en el campo plot.
Utilice la siguiente sintaxis para especificar la query:
$movies = Movie::where('$text', ['$search' => '"love story"']) ->get();
Para ver los resultados de la query en la vista browse_movies, edita la función show() en el archivo MovieController.php para que se asemeje al siguiente código:
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 ... ...
Puntuación de búsqueda
Una consulta de texto asigna una puntuación de texto numérica para indicar qué tan cerca está cada resultado de coincidir con la serie de tu filtro de consulta. Puedes ordenar los resultados por relevancia usando el método orderBy() para ordenar en el campo de metadatos textScore. Puedes acceder a estos metadatos usando el operador $meta:
$movies = Movie::where('$text', ['$search' => '"love story"']) ->orderBy('score', ['$meta' => 'textScore']) ->get();
Tip
Para obtener más información sobre el método orderBy(), consulta la sección Ordenar resultados de query de la guía Modificar salida de query.
Información Adicional
To view runnable code examples that demonstrate how to perform find operations by using the Laravel Integration, see the following usage examples:
Para aprender cómo recuperar datos en función de criterios de filtro, consulta la guía Recuperar datos.