Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Búsqueda de texto completo con Scout

En esta guía, puedes aprender a usar la funcionalidad Laravel Scout en tu aplicación Laravel MongoDB. Scout te permite implementar la búsqueda de texto completo en tus modelos Eloquent. Para obtener más información, consulta Laravel Scout en la documentación de Laravel.

La integración de Scout para Laravel MongoDB ofrece la siguiente funcionalidad:

  • Proporciona una abstracción para crear Índices de MongoDB Search desde cualquier modelo MongoDB o SQL.

    Importante

    Utiliza el Generador de esquemas para crear índices de búsqueda

    Si tus documentos ya están en MongoDB, crea índices de búsqueda utilizando la MongoDB PHP Library o los métodos builder de Schema para mejorar el rendimiento de las consultas de búsqueda. Para aprender más sobre cómo crear índices de búsqueda, consulta la sección Crear un índice de Search en MongoDB en la guía de MongoDB Search.

  • Le permite replicar automáticamente datos de MongoDB en un motor de búsqueda como Meilisearch o Algolia. Puede usar un modelo Eloquent de MongoDB como fuente para importar e indexar. Para obtener más información sobre la indexación en un motor de búsqueda, consulta la sección Indexación de la documentación de Laravel Scout.

Importante

Compatibilidad de implementación

Solo puedes utilizar Laravel Scout cuando te conectas a implementaciones MongoDB Atlas. Esta funcionalidad no está disponible para implementaciones autogestionados.

Este tutorial demuestra cómo utilizar Scout para agrupar e indexar documentos para MongoDB Search desde modelos Eloquent (MongoDB o SQL).

1

Antes de que puedas utilizar Scout en tu aplicación, ejecuta el siguiente comando desde el directorio raíz de tu aplicación para instalar el paquete laravel/scout:

composer require laravel/scout
2

Agregar el rasgo Laravel\Scout\Searchable a un modelo de Eloquent para hacerlo indexable. El siguiente ejemplo añade esta característica al modelo Movie, que representa documentos en la colección sample_mflix.movies:

<?php
namespace App\Models;
use MongoDB\Laravel\Eloquent\Model;
use Laravel\Scout\Searchable;
class Movie extends Model
{
use Searchable;
protected $connection = 'mongodb';
}

También puedes utilizar el atributo Searchable para reformatear documentos, insertar documentos relacionados o transformar valores de documentos. Para obtener más información, consulta la sección Configurando datos buscables de la documentación de Laravel Scout.

3

Asegúrate de que tu aplicación esté configurada para utilizar MongoDB como su conexión de base de datos. Para aprender cómo configurar MongoDB, consulta la sección Configura tu conexión de MongoDB de la guía de inicio rápido.

Para configurar Scout en su aplicación, cree un archivo llamado scout.php en el directorio config de su aplicación. Pega el siguiente código en el archivo para configurar Scout:

config/scout.php
<?php
return [
'driver' => env('SCOUT_DRIVER', 'mongodb'),
'mongodb' => [
'connection' => env('SCOUT_MONGODB_CONNECTION', 'mongodb'),
],
'prefix' => env('SCOUT_PREFIX', 'scout_'),
];

El código anterior especifica la siguiente configuración:

  • Utiliza el valor de la variable de entorno SCOUT_DRIVER como driver de búsqueda por defecto, o mongodb si la variable de entorno no está configurada

  • Especifica scout_ como prefijo para el nombre de la colección de la colección búsqueda.

En el archivo config/scout.php, también puede especificar una definición personalizada de índice de búsqueda de MongoDB. Para obtener más información, consulta el ejemplo de definición de índice personalizado en el siguiente paso.

Establezca la siguiente variable de entorno en el archivo .env de su aplicación para seleccionar mongodb como el controlador de búsqueda por defecto:

.env
SCOUT_DRIVER=mongodb

Tip

En cola

Cuando utilice Scout, considere configurar un driver de cola para reducir los tiempos de respuesta de la interfaz web de su aplicación. Para obtener más información, consulte la sección de colas de la documentación de Laravel Scout y la guía Configurar cola de Laravel.

4

Después de configurar Scout y establecer tu controlador de búsqueda predeterminado, puedes crear tu colección buscable e índice de búsqueda ejecutando el siguiente comando desde el directorio raíz de tu aplicación:

php artisan scout:index 'App\Models\Movie'

Dado que has configurado MongoDB como el driver de búsqueda por defecto, el comando anterior crea la colección de búsqueda con un índice MongoDB Search en tu base de datos MongoDB. La colección se llama scout_movies, en función del prefijo establecido en el paso anterior. El índice MongoDB Search se llama scout y tiene la siguiente configuración por defecto:

{
"mappings": {
"dynamic": true
}
}

Para personalizar la definición del índice, añade la configuración index-definitions a la entrada mongodb en tu archivo config/scout.php. El siguiente código muestra cómo especificar una definición personalizada de índice para crear en la colección scout_movies:

'mongodb' => [
'connection' => env('SCOUT_MONGODB_CONNECTION', 'mongodb'),
'index-definitions' => [
'scout_movies' => [
'mappings' => [
'dynamic' => false,
'fields' => ['title' => ['type' => 'string']]
]
]
]
], ...

Para saber más sobre cómo definir definiciones de índice de MongoDB Search, consulta la guía definir mapeos de campos en la documentación de Atlas.

Nota

MongoDB puede tardar hasta un minuto en crear y finalizar un índice de búsqueda de MongoDB, por lo que el comando scout:index podría no devolver inmediatamente un mensaje de éxito.

5

Puedes utilizar Scout para replicar datos de una colección de origen modelada por tu modelo de Eloquent en una colección que se pueda buscar. El siguiente comando replica e indexa datos de la colección movies en la colección scout_movies indexada en el paso anterior:

php artisan scout:import 'App\Models\Movie'

Los documentos se indexan automáticamente para las consultas de MongoDB Search.

Tip

Selecciona los campos a importar

Es posible que no se necesiten todos los campos de los documentos fuente en la colección buscable. Limitar la cantidad de datos que replicas puede mejorar la velocidad y el rendimiento de tu aplicación.

Puedes seleccionar campos específicos para importar definiendo el método toSearchableArray() en tu clase de modelo Eloquent. El siguiente código demuestra cómo definir toSearchableArray() para seleccionar solo los campos plot y title para la replicación:

class Movie extends Model
{
....
public function toSearchableArray(): array
{
return [
'plot' => $this->plot,
'title' => $this->title,
];
}
}

Después de completar estos pasos, puede realizar consultas MongoDB Search en la colección scout_movies de su aplicación Laravel MongoDB. Para aprender cómo realizar búsquedas de texto completo con MongoDB Search, consulte la guía Ejecutar una consulta de búsqueda de MongoDB.