Indexadores de Azure Cognitive Search

En Azure Cognitive Search, un indexador es un rastreador que extrae contenido que permite búsquedas de un origen de datos en la nube y rellena un índice de búsqueda mediante asignaciones de campo a campo entre el origen de datos y el índice de búsqueda. Este enfoque se denomina a veces "modelo de extracción", porque el servicio de búsqueda extrae datos sin que sea preciso escribir código que agregue datos en un índice. Los indexadores también controlan las funcionalidades de enriquecimiento con AI de Cognitive Search, lo que integra el procesamiento externo del contenido en ruta en un índice.

Los indexadores son solo en la nube, con indexadores individuales para orígenes de datos admitidos. Al configurar un indexador, debe especificar un origen de datos (procedencia), así como un índice de búsqueda (destino). Varios orígenes, como Azure Blob Storage, tienen propiedades de configuración adicionales específicas de ese tipo de contenido.

Puede ejecutar los indexadores a petición o con una programación de actualización periódica de datos que se ejecuta con una frecuencia de incluso cada cinco minutos. Las actualizaciones más frecuentes requieren un "modelo de inserción" que actualice simultáneamente los datos tanto en Azure Cognitive Search como en su origen de datos externo.

Uso de indexadores

Puede usar un indexador como único medio para la ingesta de datos o como parte de una combinación de técnicas que cargan y, opcionalmente, transforman o enriquecen el contenido a lo largo del proceso. En la tabla siguiente se resumen los principales escenarios.

Escenario Estrategia
Origen de datos único Este patrón es el más simple: un origen de datos es el único proveedor de contenido de un índice de búsqueda. La mayoría de los orígenes de datos admitidos proporcionan algún tipo de detección de cambios para que las ejecuciones posteriores del indexador resalten la diferencia cuando se agregue o actualice contenido en el origen.
Varios orígenes de datos Una especificación de indexador solo puede tener un origen de datos, pero el propio índice de búsqueda puede aceptar contenido de varios orígenes, donde cada ejecución del indexador aporta contenido nuevo de un proveedor de datos diferente. Cada origen puede aportar su parte de documentos completos o rellenar los campos seleccionados en cada documento. Para ver más de cerca este escenario, consulte Tutorial: Indexación de varios orígenes de datos.
Varios indexadores Normalmente se emparejan varios orígenes de datos con varios indexadores si necesita variar los parámetros de tiempo de ejecución, la programación o las asignaciones de campos. Otro escenario es el de

escalabilidad horizontal entre regiones de Cognitive Search. Es posible que tenga copias del mismo índice de búsqueda en diferentes regiones. Para sincronizar el contenido del índice de búsqueda, puede tener varios indexadores que extraigan datos del mismo origen, donde cada indexador tiene como destino un índice de búsqueda diferente en cada región. La

indexación en paralelo de conjuntos de datos de gran tamaño también requiere una estrategia de varios indexadores, donde cada indexador se dirige a un subconjunto de los datos.
Transformación de contenido Los indexadores impulsan el enriquecimiento con IA. Las transformaciones de contenido se definen en un conjunto de aptitudes que se asocia al indexador.

Orígenes de datos admitidos

Los indexadores rastrean los almacenes de datos en Azure y fuera de Azure.

Los indexadores aceptan conjuntos de filas planas, como una tabla o vista, o elementos de un contenedor o carpeta. En la mayoría de los casos, crea un documento de búsqueda por fila, registro o elemento.

Las conexiones de indexador a orígenes de datos remotos se pueden realizar mediante conexiones de Internet estándar (públicas) o conexiones privadas cifradas, cuando se usan redes virtuales de Azure para las aplicaciones cliente. También puede configurar conexiones para autenticarse mediante una identidad administrada. Para más información sobre las conexiones seguras, consulte Concesión de acceso a través de puntos de conexión privados y Configuración de una conexión de indexador a un origen de datos mediante una identidad administrada.

Fases de la indexación

En una ejecución inicial, cuando el índice está vacío, un indexador lee todos los datos proporcionados en la tabla o el contenedor. En las ejecuciones posteriores, el indexador normalmente puede detectar y recuperar solo los datos que han cambiado. En el caso de los datos de blob, la detección de cambios es automática. En otros orígenes de datos, como Azure SQL o Cosmos DB, la detección de cambios se debe habilitar.

En todos los documentos que recibe, un indexador implementa o coordina varios pasos, desde la recuperación del documento hasta una "entrega" final del motor de búsqueda para la indexación. Opcionalmente, un indexador también impulsa la ejecución y los resultados del conjunto de aptitudes, siempre y cuando se haya definido uno.

Indexer Stages

Fase 1 Descifrado de documentos

El descifrado de documentos es el proceso de abrir archivos y extraer contenido. El contenido basado en texto se puede extraer de los archivos de un servicio, de las filas de una tabla o de los elementos de un contenedor o una colección. Si agrega un conjunto de aptitudes y aptitudes de imagen, el descifrado de documentos también puede extraer imágenes y ponerlas en cola para su procesamiento de imágenes.

Según el origen de datos, el indizador intenta realizar diferentes operaciones para extraer contenido que posiblemente se pueda indexar:

  • Cuando el documento es un archivo, como un PDF u otro formato de archivo compatible en Azure Blob Storage, el indizador abrirá el archivo y extraerá texto, imágenes y metadatos. Los indizadores también pueden abrir archivos desde SharePoint y Azure Data Lake Storage Gen2.

  • Si el documento es un registro de Azure SQL, el indizador extrae contenido no binario de cada campo de cada registro.

  • Si el documento es un registro de Cosmos DB, el indizador extrae contenido no binario de los campos y subcampos del documento de Cosmos DB.

Fase 2: Asignaciones de campos

Un indexador extrae texto de un campo de origen y lo envía a un campo de destino de un índice o un almacén de conocimiento. Si los nombres de los campos y los tipos de datos coinciden, la ruta de acceso está clara. Pero es posible que quiera nombres o tipos diferentes en el resultado, en cuyo caso debe indicar al indexador cómo asignar el campo.

Para especificar asignaciones de campos, escriba los campos de origen y destino en la definición del indexador.

La asignación de campos se produce después del descifrado de documentos, pero antes de las transformaciones, cuando el indexador lee los documentos de origen. Al definir una asignación de campos, el valor del campo de origen se envía tal cual al campo de destino, sin modificaciones.

Fase 3: Ejecución del conjunto de aptitudes

La ejecución del conjunto de aptitudes es un paso opcional que invoca al procesamiento de IA integrado o personalizado. Es posible que lo necesite para el reconocimiento óptico de caracteres (OCR) en forma de análisis de imágenes, si los datos de origen es una imagen binaria, o puede que necesite traducción de texto, si el contenido está en varios idiomas.

Sea cual sea la transformación, la ejecución del conjunto de aptitudes es donde se produce el enriquecimiento. Si un indexador es una canalización, puede imaginarse un conjunto de aptitudes como una "canalización dentro de la canalización".

Fase 4: Asignaciones de campos de salida

Si incluye un conjunto de aptitudes, deberá especificar asignaciones de campos de salida en la definición del indexador. La salida de un conjunto de aptitudes se manifiesta internamente como una estructura de árbol denominada documento enriquecido. Las asignaciones de campos de salida permiten seleccionar qué partes de este árbol se asignan a campos del índice.

A pesar de la similitud en los nombres, las asignaciones de campos de salida y las asignaciones de campos crean asociaciones de orígenes diferentes. Las asignaciones de campos asocian el contenido del campo de origen a un campo de destino en un índice de búsqueda. Las asignaciones de campos de salida asocian el contenido de un documento enriquecido interno (salidas de aptitud) a los campos de destino del índice. A diferencia de las asignaciones de campos, que se consideran opcionales, siempre debe definir una asignación de campos de salida para cualquier contenido transformado que deba residir en un índice.

En la siguiente imagen se muestra una representación de sesión de depuración de un indexador de ejemplo de las fases del indexador: descifrado de documentos, asignaciones de campos, ejecución del conjunto de aptitudes y asignaciones de campos de salida.

sample debug session

Flujo de trabajo básico

Los indexadores pueden ofrecer características que son exclusivas del origen de datos. En este sentido, algunos aspectos de la configuración de orígenes de datos o indexadores varían según el tipo de indexador. No obstante, todos los indexadores comparten composición básica y requisitos. Más adelante, se explican los pasos que son comunes a todos los indexadores.

Paso 1: Creación de un origen de datos

Los indexadores requieren un objeto origen de datos que proporcione una cadena de conexión y, posiblemente, credenciales. Para crear el recurso, llame a Create Data Source (REST) o a la clase SearchIndexerDataSourceConnection.

Los orígenes de datos se configuran y administran independientemente de los indexadores que los usan, lo que significa que varios indexadores pueden usar un origen de datos para cargar más de un índice a la vez.

Paso 2: Creación de un índice

Un indexador automatizará algunas tareas relacionadas con la ingesta de datos, pero la creación de un índice no suele ser una de ellas. Como requisito previo, debe tener un índice predefinido con campos que coincidan con los del origen de datos externo. Los campos deben coincidir por nombre y tipo de datos. Si no es así, puede definir asignaciones de campos para establecer la asociación. Para más información sobre cómo estructurar índices, consulte Create an Index (REST) o a la clase SearchIndex .

Sugerencia

Aunque los indexadores no pueden generar un índice, el Asistente para importar datos del portal puede ayudarle. En la mayoría de los casos, el asistente puede inferir un esquema de índice de los metadatos existentes en el origen y presentar un esquema de índice preliminar que se pueda modificar en línea mientras el asistente esté activo. Una vez que el índice se crea en el servicio, la mayoría de las posteriores modificaciones se limitan a agregar nuevos campos. Tenga en cuenta al asistente para crear índices, pero no para revisarlos. Para obtener conocimientos prácticos, recorra el tutorial del portal.

Paso 3: Creación y ejecución (o programación) del indexador

De forma predeterminada, la primera ejecución del indexador se produce cuando se crea un indexador en el servicio de búsqueda. Puede establecer la propiedad "disabled" en un indexador para crearla sin ejecutarla.

Durante la ejecución del indexador es cuando se averiguará si el origen de datos es accesible o si el conjunto de aptitudes es válido. Los objetos dependientes, como los orígenes de datos y los conjuntos de aptitudes, están inactivos en el servicio de búsqueda, hasta que se inicia la ejecución del indexador.

Después de la primera ejecución del indexador, se puede volver a ejecutar a petición mediante Run Indexer, o bien se puede definir una programación periódica.

Se puede supervisar el estado del indexador en el portal o mediante el API Get Indexer Status. También hay que ejecutar consultas en el índice para comprobar que el resultado es el esperado.

Pasos siguientes

Tras esta introducción a los indexadores, el siguiente paso es revisar las propiedades y los parámetros del indexador, su programación y su supervisión. Como alternativa, puede volver a la lista de orígenes de datos admitidos, donde podrá obtener más información acerca de cualquier origen concreto.