SlideShare una empresa de Scribd logo
Tutorial #1: Crea un índice de Azure Cognitive Search en Python
utilizando Jupyter Notebooks
En este primer tutorial se explica cómo crear, cargar y consultar un índice de Azure Cognitive
Search mediante Python y las API REST del servicio cognitivo. La ejecución es en un ambiente
Anaconda 3.x, pero de forma alternativa puedes utilizar Azure Jupyter Notebooks, un servicio
gratuito para ejecución de scripts de Python en la nube.
NOTA: Este taller está basado en el tutorial localizado en la documentación oficial.
Pre-requisitos:
 Anaconda 3.x, el cual contiene Python 3.x e instancias de Jupyter Notebook
 O también puedes utilizar el servicio de Azure Jupyter Notebooks.
 Un recurso de Azure Cognitive Search.
Paso 1. Creación del recurso de Azure Cognitive Search
a) Accede al portal de Azure (https://portal.azure.com) y busca el recurso Azure Cognitive
Search:
b) Da clic en el botón Create.
c) Llena los datos solicitados y da clic en Review + create:
 Grupo de recursos: taller2-rg (nuevo)
 URL: Debe ser un nombre único/universal
 Ubicación: West US 2
 Esquema de precio: Gratuito
d) Da clic en Create.
e) Una vez generado el recurso, accede a él (desde las notificaciones o localízalo en tu
suscripción)
f) En la sección Keys, copia la llave que aparece en debajo de Primary admin key.
g) También toma nota del nombre de tu recurso (taller-search-lb en este caso).
Paso 2. Creación del proyecto de Azure Notebooks.
a) Ingresa a Azure Notebooks (https://notebooks.azure.com)
b) Da clic en My Projects y da clic en New Project.
c) El nombre del proyecto es Taller-IA02. Llena el resto de los datos solicitados de la
siguiente manera:
d) Da clic en el botón + y selecciona Notebook:
e) El nombre del cuaderno de trabajo es search-demo.ipynb,yellenguaje es Python3.5. Da
clic en New.
Paso 3. Creación del índice:
a) Preparación
A continuación, veamos el código para crear un índice de búsqueda y filtrar información. En la
primer celda carga las bibliotecas para trabajar con JSON y formular las solicitudes HTTP:
import json
import requests
from pprint import pprint
En la segunda celda, introduce los elementos de solicitud que serán constantes en cada solicitud.
Reemplaza el nombre del servicio de búsqueda (YOUR-SEARCH-SERVICE-NAME) y la clave de API
de administración (YOUR-ADMIN-API-KEY) por los valores obtenidos al crear el recurso de Azure
Cognitive Search.
endpoint = 'https://<YOUR-SEARCH-SERVICE-NAME>.search.windows.net/'
api_version = '?api-version=2019-05-06'
headers = {'Content-Type': 'application/json',
'api-key': '<YOUR-ADMIN-API-KEY>' }
En la tercera celda, realiza la petición http de tipo GET que tiene como objetivo la colección de
índices del servicio de búsqueda y selecciona la propiedad de nombre de los índices existentes.
url = endpoint + "indexes" + api_version + "&$select=name"
response = requests.get(url, headers=headers)
index_list = response.json()
pprint(index_list)
Ejecuta estas 3 celdas:
b) Creación del índice
Los elementos necesarios de un índice incluyen un nombre, una colección de campos y una clave.
La colección de campos define la estructura de un documento. Cada campo tiene nombre, tipo y
atributos que determinan cómo se usa el campo (por ejemplo, si es texto completo que se puede
buscar, filtrar o recuperar en los resultados de búsqueda). Dentro de un índice, uno de los campos
de tipo Edm.String se debe designar como la clave para la identidad del documento.
Este índice se denomina "hotels-quickstart" y tiene las definiciones de campo que aparecen a
continuación. Pega el siguiente código en una celda para proporcionar el esquema.
index_schema = {
"name": "hotels-quickstart",
"fields": [
{"name": "HotelId", "type": "Edm.String", "key": "true", "filterable":
"true"},
{"name": "HotelName", "type": "Edm.String", "searchable": "true",
"filterable": "false", "sortable": "true", "facetable": "false"},
{"name": "Description", "type": "Edm.String", "searchable": "true",
"filterable": "false", "sortable": "false", "facetable": "false", "analyzer":
"en.lucene"},
{"name": "Description_fr", "type": "Edm.String", "searchable": "true",
"filterable": "false", "sortable": "false", "facetable": "false", "analyzer":
"fr.lucene"},
{"name": "Category", "type": "Edm.String", "searchable": "true",
"filterable": "true", "sortable": "true", "facetable": "true"},
{"name": "Tags", "type": "Collection(Edm.String)", "searchable": "true",
"filterable": "true", "sortable": "false", "facetable": "true"},
{"name": "ParkingIncluded", "type": "Edm.Boolean", "filterable": "true",
"sortable": "true", "facetable": "true"},
{"name": "LastRenovationDate", "type": "Edm.DateTimeOffset", "filterable":
"true", "sortable": "true", "facetable": "true"},
{"name": "Rating", "type": "Edm.Double", "filterable": "true", "sortable":
"true", "facetable": "true"},
{"name": "Address", "type": "Edm.ComplexType",
"fields": [
{"name": "StreetAddress", "type": "Edm.String", "filterable": "false",
"sortable": "false", "facetable": "false", "searchable": "true"},
{"name": "City", "type": "Edm.String", "searchable": "true", "filterable":
"true", "sortable": "true", "facetable": "true"},
{"name": "StateProvince", "type": "Edm.String", "searchable": "true",
"filterable": "true", "sortable": "true", "facetable": "true"},
{"name": "PostalCode", "type": "Edm.String", "searchable": "true",
"filterable": "true", "sortable": "true", "facetable": "true"},
{"name": "Country", "type": "Edm.String", "searchable": "true",
"filterable": "true", "sortable": "true", "facetable": "true"}
]
}
]
}
En otra celda,realiza lasolicitudhttp de tipo POST que tiene como objetivo lacolección de índices
del servicio de búsqueda y crea un índice en función del esquema de índice proporcionado en la
celda anterior.
url = endpoint + "indexes" + api_version
response = requests.post(url, headers=headers, json=index_schema)
index = response.json()
pprint(index)
Ejecuta estas dos celdas:
c) Carga de documentos:
Para insertar documentos, usa una solicitud HTTP POST al punto de conexión de la dirección URL
del índice.
En una celda nueva, proporciona 4 documentos que se ajustan al esquema de índice. Especifica
una acción de carga para cada documento.
documents = {
"value": [
{
"@search.action": "upload",
"HotelId": "1",
"HotelName": "Secret Point Motel",
"Description": "The hotel is ideally located on the main commercial artery of
the city in the heart of New York. A few minutes away is Time's Square and the
historic centre of the city, as well as other places of interest that make New
York one of America's most attractive and cosmopolitan cities.",
"Description_fr": "L'hôtel est idéalement situé sur la principale artère
commerciale de la ville en plein cœur de New York. A quelques minutes se trouve
la place du temps et le centre historique de la ville, ainsi que d'autres lieux
d'intérêt qui font de New York l'une des villes les plus attractives et
cosmopolites de l'Amérique.",
"Category": "Boutique",
"Tags": [ "pool", "air conditioning", "concierge" ],
"ParkingIncluded": "false",
"LastRenovationDate": "1970-01-18T00:00:00Z",
"Rating": 3.60,
"Address": {
"StreetAddress": "677 5th Ave",
"City": "New York",
"StateProvince": "NY",
"PostalCode": "10022",
"Country": "USA"
}
},
{
"@search.action": "upload",
"HotelId": "2",
"HotelName": "Twin Dome Motel",
"Description": "The hotel is situated in a nineteenth century plaza, which
has been expanded and renovated to the highest architectural standards to create
a modern, functional and first-class hotel in which art and unique historical
elements coexist with the most modern comforts.",
"Description_fr": "L'hôtel est situé dans une place du XIXe siècle, qui a été
agrandie et rénovée aux plus hautes normes architecturales pour créer un hôtel
moderne, fonctionnel et de première classe dans lequel l'art et les éléments
historiques uniques coexistent avec le confort le plus moderne.",
"Category": "Boutique",
"Tags": [ "pool", "free wifi", "concierge" ],
"ParkingIncluded": "false",
"LastRenovationDate": "1979-02-18T00:00:00Z",
"Rating": 3.60,
"Address": {
"StreetAddress": "140 University Town Center Dr",
"City": "Sarasota",
"StateProvince": "FL",
"PostalCode": "34243",
"Country": "USA"
}
},
{
"@search.action": "upload",
"HotelId": "3",
"HotelName": "Triple Landscape Hotel",
"Description": "The Hotel stands out for its gastronomic excellence under the
management of William Dough, who advises on and oversees all of the Hotel's
restaurant services.",
"Description_fr": "L'hôtel est situé dans une place du XIXe siècle, qui a été
agrandie et rénovée aux plus hautes normes architecturales pour créer un hôtel
moderne, fonctionnel et de première classe dans lequel l'art et les éléments
historiques uniques coexistent avec le confort le plus moderne.",
"Category": "Resort and Spa",
"Tags": [ "air conditioning", "bar", "continental breakfast" ],
"ParkingIncluded": "true",
"LastRenovationDate": "2015-09-20T00:00:00Z",
"Rating": 4.80,
"Address": {
"StreetAddress": "3393 Peachtree Rd",
"City": "Atlanta",
"StateProvince": "GA",
"PostalCode": "30326",
"Country": "USA"
}
},
{
"@search.action": "upload",
"HotelId": "4",
"HotelName": "Sublime Cliff Hotel",
"Description": "Sublime Cliff Hotel is located in the heart of the historic
center of Sublime in an extremely vibrant and lively area within short walking
distance to the sites and landmarks of the city and is surrounded by the
extraordinary beauty of churches, buildings, shops and monuments. Sublime Cliff
is part of a lovingly restored 1800 palace.",
"Description_fr": "Le sublime Cliff Hotel est situé au coeur du centre
historique de sublime dans un quartier extrêmement animé et vivant, à courte
distance de marche des sites et monuments de la ville et est entouré par
l'extraordinaire beauté des églises, des bâtiments, des commerces et Monuments.
Sublime Cliff fait partie d'un Palace 1800 restauré avec amour.",
"Category": "Boutique",
"Tags": [ "concierge", "view", "24-hour front desk service" ],
"ParkingIncluded": "true",
"LastRenovationDate": "1960-02-06T00:00:00Z",
"Rating": 4.60,
"Address": {
"StreetAddress": "7400 San Pedro Ave",
"City": "San Antonio",
"StateProvince": "TX",
"PostalCode": "78216",
"Country": "USA"
}
}
]
}
En otra celda, realiza la solicitud http POST que tiene como destino la colección de documentos
del índice hotels-quickstart y envía los documentos proporcionados en el paso anterior.
url = endpoint + "indexes/hotels-quickstart/docs/index" + api_version
response = requests.post(url, headers=headers, json=documents)
index_content = response.json()
pprint(index_content)
Ejecuta ambas celdas:
d) Búsqueda en índices:
Este paso muestra cómo realizar consultas en un índice con la API de REST de Azure Cognitive
Search.
En una celda, proporciona una expresión de consulta que ejecute una búsqueda vacía
(búsqueda=*), la cual devuelve una lista no clasificada (puntuación de búsqueda=1,0) de
documentos arbitrarios. De forma predeterminada, Azure Cognitive Search devuelve 50
resultados cada vez.
Al ser estructurada, esta consulta devuelve la estructura y los valores del documento entero.
Agrega $count=true para obtener un recuento de todos los documentos de los resultados.
searchstring = '&search=*&$count=true'
url = endpoint + "indexes/hotels-quickstart/docs" + api_version + searchstring
response = requests.get(url, headers=headers, json=searchstring)
query = response.json()
pprint(query)
Ejecuta y observa los resultados:
En una celda nueva, proporciona el código siguiente para buscar los términos "hoteles" y "wifi".
Agrega $select para especificar qué campos quiere incluir en los resultados de búsqueda.
searchstring = '&search=hotels wifi&$count=true&$select=HotelId,HotelName'
url = endpoint + "indexes/hotels-quickstart/docs" + api_version + searchstring
response = requests.get(url, headers=headers, json=searchstring)
query = response.json()
pprint(query)
Si ejecutas la celda, el resultado se muestra a continuación:
A continuación, aplica una expresión $filter que seleccione solo aquellos hoteles con una
clasificación superior a 4.
searchstring = '&search=*&$filter=Rating gt
4&$select=HotelId,HotelName,Description,Rating'
url = endpoint + "indexes/hotels-quickstart/docs" + api_version + searchstring
response = requests.get(url, headers=headers, json=searchstring)
query = response.json()
pprint(query)
Ejecuta y observa el resultado:
De forma predeterminada, el motor de búsqueda devuelve los 50 documentos más importantes,
pero puedes usar las subcláusulas TOP y SKIP para agregar paginación y elegir el número de
documentos en cada resultado. Esta consulta devuelve dos documentos en cada conjunto de
resultados.
searchstring = '&search=boutique&$top=2&$select=HotelId,HotelName,Description'
url = endpoint + "indexes/hotels-quickstart/docs" + api_version + searchstring
response = requests.get(url, headers=headers, json=searchstring)
query = response.json()
pprint(query)
Ejecuta la celda para comprobar:
En este último ejemplo, use $orderby para ordenar los resultados por ciudad. En este ejemplo se
incluyen los campos de la colección de direcciones.
searchstring = '&search=pool&$orderby=Address/City&$select=HotelId, HotelName,
Address/City, Address/StateProvince'
url = endpoint + "indexes/hotels-quickstart/docs" + api_version + searchstring
response = requests.get(url, headers=headers, json=searchstring)
query = response.json()
pprint(query)
e) Limpieza
Si has completado todo lo necesario para crear el índice, puedes eliminarlo con las siguientes
líneas de código:
url = endpoint + "indexes/hotels-quickstart" + api_version
response = requests.delete(url, headers=headers)
Eliminar índices innecesarios libera espacio. Confirma el borrado del índice ejecutando el
siguiente script que lista todos los índices en tu servicio de búsqueda. Si hotels-quickstart no está
listado, has eliminado exitosamente el índice creado en este tutorial.
url = endpoint + "indexes" + api_version + "&$select=name"
response = requests.get(url, headers=headers)
index_list = response.json()
pprint(index_list)
Ejecuta ambas celdas y observa el resultado:

Más contenido relacionado

Similar a Taller IA 2A - Azure Cognitive Search

Laboratorio de XML en DB2
Laboratorio de XML en DB2Laboratorio de XML en DB2
Laboratorio de XML en DB2
JOSE AHIAS LOPEZ PORTILLO
 
Taller desarrollo de apis
Taller desarrollo de apisTaller desarrollo de apis
Taller desarrollo de apis
CloudAppi
 
Sr. Pablo García, Internet de las Cosas y Big Data: ¿hacia dónde va la Indust...
Sr. Pablo García, Internet de las Cosas y Big Data: ¿hacia dónde va la Indust...Sr. Pablo García, Internet de las Cosas y Big Data: ¿hacia dónde va la Indust...
Sr. Pablo García, Internet de las Cosas y Big Data: ¿hacia dónde va la Indust...
INACAP
 
WORKSHOP I: Introducción a API REST
WORKSHOP I: Introducción a API RESTWORKSHOP I: Introducción a API REST
WORKSHOP I: Introducción a API REST
BEEVA_es
 
JSDays Desarrolla tu primera API
JSDays Desarrolla tu primera APIJSDays Desarrolla tu primera API
JSDays Desarrolla tu primera API
CloudAppi
 
Mi primera aplicación con MongoDB
Mi primera aplicación con MongoDBMi primera aplicación con MongoDB
Mi primera aplicación con MongoDB
Software Guru
 
Análisis de Datos con MongoDB
Análisis de Datos con MongoDBAnálisis de Datos con MongoDB
Análisis de Datos con MongoDB
Alejandro Mancilla
 
Original Hacker 5
Original Hacker 5Original Hacker 5
Original Hacker 5
Huehue 1
 
Informe_Base de datos
Informe_Base de datos Informe_Base de datos
Informe_Base de datos
Rita Aguilar
 
la mejor forma de Conectar c# con mysql con archivos de configuracion
 la mejor forma de Conectar c# con mysql con archivos de configuracion  la mejor forma de Conectar c# con mysql con archivos de configuracion
la mejor forma de Conectar c# con mysql con archivos de configuracion
juandavid1118
 
Taller Android Party: Automatic API REST + Notificaciones PUSH
Taller Android Party: Automatic API REST + Notificaciones PUSHTaller Android Party: Automatic API REST + Notificaciones PUSH
Taller Android Party: Automatic API REST + Notificaciones PUSH
Alejandro Esquiva Rodriguez
 
Taller mongodb
Taller mongodbTaller mongodb
Trabajo base de_datos_biblioteca_v4 (1)
Trabajo base de_datos_biblioteca_v4 (1)Trabajo base de_datos_biblioteca_v4 (1)
Trabajo base de_datos_biblioteca_v4 (1)
PrimalMandingo
 
Colegio+de+estudios+cientificos+y+tecnologicos+del+estado+de+mexico
Colegio+de+estudios+cientificos+y+tecnologicos+del+estado+de+mexicoColegio+de+estudios+cientificos+y+tecnologicos+del+estado+de+mexico
Colegio+de+estudios+cientificos+y+tecnologicos+del+estado+de+mexico
25415252
 
Slides trabajocolaborativo1
Slides trabajocolaborativo1Slides trabajocolaborativo1
Slides trabajocolaborativo1
Daniel
 
Ejercicios_HTML5.pdf
Ejercicios_HTML5.pdfEjercicios_HTML5.pdf
Ejercicios_HTML5.pdf
fgu
 
Ejercicios_HTML5.pdf
Ejercicios_HTML5.pdfEjercicios_HTML5.pdf
Ejercicios_HTML5.pdf
fgu
 
Php07 consultas bd
Php07 consultas bdPhp07 consultas bd
Php07 consultas bd
Julio Pari
 
Lightning connect dug_26_nov2015
Lightning connect dug_26_nov2015Lightning connect dug_26_nov2015
Lightning connect dug_26_nov2015
Alba Azcona Rivas
 
Automatic API REST Droidcon
Automatic API REST DroidconAutomatic API REST Droidcon
Automatic API REST Droidcon
Alejandro Esquiva Rodriguez
 

Similar a Taller IA 2A - Azure Cognitive Search (20)

Laboratorio de XML en DB2
Laboratorio de XML en DB2Laboratorio de XML en DB2
Laboratorio de XML en DB2
 
Taller desarrollo de apis
Taller desarrollo de apisTaller desarrollo de apis
Taller desarrollo de apis
 
Sr. Pablo García, Internet de las Cosas y Big Data: ¿hacia dónde va la Indust...
Sr. Pablo García, Internet de las Cosas y Big Data: ¿hacia dónde va la Indust...Sr. Pablo García, Internet de las Cosas y Big Data: ¿hacia dónde va la Indust...
Sr. Pablo García, Internet de las Cosas y Big Data: ¿hacia dónde va la Indust...
 
WORKSHOP I: Introducción a API REST
WORKSHOP I: Introducción a API RESTWORKSHOP I: Introducción a API REST
WORKSHOP I: Introducción a API REST
 
JSDays Desarrolla tu primera API
JSDays Desarrolla tu primera APIJSDays Desarrolla tu primera API
JSDays Desarrolla tu primera API
 
Mi primera aplicación con MongoDB
Mi primera aplicación con MongoDBMi primera aplicación con MongoDB
Mi primera aplicación con MongoDB
 
Análisis de Datos con MongoDB
Análisis de Datos con MongoDBAnálisis de Datos con MongoDB
Análisis de Datos con MongoDB
 
Original Hacker 5
Original Hacker 5Original Hacker 5
Original Hacker 5
 
Informe_Base de datos
Informe_Base de datos Informe_Base de datos
Informe_Base de datos
 
la mejor forma de Conectar c# con mysql con archivos de configuracion
 la mejor forma de Conectar c# con mysql con archivos de configuracion  la mejor forma de Conectar c# con mysql con archivos de configuracion
la mejor forma de Conectar c# con mysql con archivos de configuracion
 
Taller Android Party: Automatic API REST + Notificaciones PUSH
Taller Android Party: Automatic API REST + Notificaciones PUSHTaller Android Party: Automatic API REST + Notificaciones PUSH
Taller Android Party: Automatic API REST + Notificaciones PUSH
 
Taller mongodb
Taller mongodbTaller mongodb
Taller mongodb
 
Trabajo base de_datos_biblioteca_v4 (1)
Trabajo base de_datos_biblioteca_v4 (1)Trabajo base de_datos_biblioteca_v4 (1)
Trabajo base de_datos_biblioteca_v4 (1)
 
Colegio+de+estudios+cientificos+y+tecnologicos+del+estado+de+mexico
Colegio+de+estudios+cientificos+y+tecnologicos+del+estado+de+mexicoColegio+de+estudios+cientificos+y+tecnologicos+del+estado+de+mexico
Colegio+de+estudios+cientificos+y+tecnologicos+del+estado+de+mexico
 
Slides trabajocolaborativo1
Slides trabajocolaborativo1Slides trabajocolaborativo1
Slides trabajocolaborativo1
 
Ejercicios_HTML5.pdf
Ejercicios_HTML5.pdfEjercicios_HTML5.pdf
Ejercicios_HTML5.pdf
 
Ejercicios_HTML5.pdf
Ejercicios_HTML5.pdfEjercicios_HTML5.pdf
Ejercicios_HTML5.pdf
 
Php07 consultas bd
Php07 consultas bdPhp07 consultas bd
Php07 consultas bd
 
Lightning connect dug_26_nov2015
Lightning connect dug_26_nov2015Lightning connect dug_26_nov2015
Lightning connect dug_26_nov2015
 
Automatic API REST Droidcon
Automatic API REST DroidconAutomatic API REST Droidcon
Automatic API REST Droidcon
 

Más de Luis Beltran

AI for Accessibility.pptx
AI for Accessibility.pptxAI for Accessibility.pptx
AI for Accessibility.pptx
Luis Beltran
 
NET Conf Bhubaneswar - Migrating your Xamarin.Forms app to .NET MAUI.pptx
NET Conf Bhubaneswar - Migrating your Xamarin.Forms app to .NET MAUI.pptxNET Conf Bhubaneswar - Migrating your Xamarin.Forms app to .NET MAUI.pptx
NET Conf Bhubaneswar - Migrating your Xamarin.Forms app to .NET MAUI.pptx
Luis Beltran
 
03 GlobalAIBootcamp2020Lisboa-Rock, Paper, Scissors.pptx
03 GlobalAIBootcamp2020Lisboa-Rock, Paper, Scissors.pptx03 GlobalAIBootcamp2020Lisboa-Rock, Paper, Scissors.pptx
03 GlobalAIBootcamp2020Lisboa-Rock, Paper, Scissors.pptx
Luis Beltran
 
BI LATAM Summit 2022 - Creación de soluciones de automatización serverless-...
BI LATAM Summit 2022 - Creación de soluciones de automatización serverless-...BI LATAM Summit 2022 - Creación de soluciones de automatización serverless-...
BI LATAM Summit 2022 - Creación de soluciones de automatización serverless-...
Luis Beltran
 
CEIAAIT - Fundamentos y Aplicaciones de Deep Learning.pdf
CEIAAIT - Fundamentos y Aplicaciones de Deep Learning.pdfCEIAAIT - Fundamentos y Aplicaciones de Deep Learning.pdf
CEIAAIT - Fundamentos y Aplicaciones de Deep Learning.pdf
Luis Beltran
 
Computo en la Nube con Azure - AI Gaming Panama.pptx
Computo en la Nube con Azure - AI Gaming Panama.pptxComputo en la Nube con Azure - AI Gaming Panama.pptx
Computo en la Nube con Azure - AI Gaming Panama.pptx
Luis Beltran
 
5StarsConf - Serverless Machine Learning con Azure Functions y ML.NET .pptx
5StarsConf - Serverless Machine Learning con Azure Functions y ML.NET .pptx5StarsConf - Serverless Machine Learning con Azure Functions y ML.NET .pptx
5StarsConf - Serverless Machine Learning con Azure Functions y ML.NET .pptx
Luis Beltran
 
ACW - Azure Speaker Recognition Biometria de Voz.pptx
ACW - Azure Speaker Recognition Biometria de Voz.pptxACW - Azure Speaker Recognition Biometria de Voz.pptx
ACW - Azure Speaker Recognition Biometria de Voz.pptx
Luis Beltran
 
UNICABA - Azure Machine Learning.pptx
UNICABA - Azure Machine Learning.pptxUNICABA - Azure Machine Learning.pptx
UNICABA - Azure Machine Learning.pptx
Luis Beltran
 
Azure Talks Bolivia - Aumente la confiabilidad de su negocio con Azure Anomal...
Azure Talks Bolivia - Aumente la confiabilidad de su negocio con Azure Anomal...Azure Talks Bolivia - Aumente la confiabilidad de su negocio con Azure Anomal...
Azure Talks Bolivia - Aumente la confiabilidad de su negocio con Azure Anomal...
Luis Beltran
 
Latino NET - Integrando WhatsApp en nuestras apps .NET con Twilio.pptx
Latino NET - Integrando WhatsApp en nuestras apps .NET con Twilio.pptxLatino NET - Integrando WhatsApp en nuestras apps .NET con Twilio.pptx
Latino NET - Integrando WhatsApp en nuestras apps .NET con Twilio.pptx
Luis Beltran
 
NOVA - Enriquecimiento de IA con Azure Cognitive Search.pptx
NOVA - Enriquecimiento de IA con Azure Cognitive Search.pptxNOVA - Enriquecimiento de IA con Azure Cognitive Search.pptx
NOVA - Enriquecimiento de IA con Azure Cognitive Search.pptx
Luis Beltran
 
Netcoreconf 2021 Realidad mixta en apps móviles con Azure Spatial Anchors y ...
Netcoreconf 2021 Realidad mixta en apps móviles con Azure Spatial Anchors y ...Netcoreconf 2021 Realidad mixta en apps móviles con Azure Spatial Anchors y ...
Netcoreconf 2021 Realidad mixta en apps móviles con Azure Spatial Anchors y ...
Luis Beltran
 
ATG Puebla - El cementerio de Microsoft.pptx
ATG Puebla - El cementerio de Microsoft.pptxATG Puebla - El cementerio de Microsoft.pptx
ATG Puebla - El cementerio de Microsoft.pptx
Luis Beltran
 
Data-Saturday-10-Sofia-2021 Azure Video Indexer- Advanced data extraction fro...
Data-Saturday-10-Sofia-2021 Azure Video Indexer- Advanced data extraction fro...Data-Saturday-10-Sofia-2021 Azure Video Indexer- Advanced data extraction fro...
Data-Saturday-10-Sofia-2021 Azure Video Indexer- Advanced data extraction fro...
Luis Beltran
 
Azure Community Conference - Image Recognition in WhatsApp chatbot with Azure...
Azure Community Conference - Image Recognition in WhatsApp chatbot with Azure...Azure Community Conference - Image Recognition in WhatsApp chatbot with Azure...
Azure Community Conference - Image Recognition in WhatsApp chatbot with Azure...
Luis Beltran
 
Real NET Docs Show - Serverless Machine Learning v3.pptx
Real NET Docs Show - Serverless Machine Learning v3.pptxReal NET Docs Show - Serverless Machine Learning v3.pptx
Real NET Docs Show - Serverless Machine Learning v3.pptx
Luis Beltran
 
Sesion 5 - Eficiencia del Rendimiento - Well Architected Backstage Tour.pptx
Sesion 5 - Eficiencia del Rendimiento - Well Architected Backstage Tour.pptxSesion 5 - Eficiencia del Rendimiento - Well Architected Backstage Tour.pptx
Sesion 5 - Eficiencia del Rendimiento - Well Architected Backstage Tour.pptx
Luis Beltran
 
XamarinExpertDay - Creating PDF files in mobile apps with PdfSharpCore and Mi...
XamarinExpertDay - Creating PDF files in mobile apps with PdfSharpCore and Mi...XamarinExpertDay - Creating PDF files in mobile apps with PdfSharpCore and Mi...
XamarinExpertDay - Creating PDF files in mobile apps with PdfSharpCore and Mi...
Luis Beltran
 
Latam Space Week - Clasificación de rocas espaciales por medio de IA.pptx
Latam Space Week - Clasificación de rocas espaciales por medio de IA.pptxLatam Space Week - Clasificación de rocas espaciales por medio de IA.pptx
Latam Space Week - Clasificación de rocas espaciales por medio de IA.pptx
Luis Beltran
 

Más de Luis Beltran (20)

AI for Accessibility.pptx
AI for Accessibility.pptxAI for Accessibility.pptx
AI for Accessibility.pptx
 
NET Conf Bhubaneswar - Migrating your Xamarin.Forms app to .NET MAUI.pptx
NET Conf Bhubaneswar - Migrating your Xamarin.Forms app to .NET MAUI.pptxNET Conf Bhubaneswar - Migrating your Xamarin.Forms app to .NET MAUI.pptx
NET Conf Bhubaneswar - Migrating your Xamarin.Forms app to .NET MAUI.pptx
 
03 GlobalAIBootcamp2020Lisboa-Rock, Paper, Scissors.pptx
03 GlobalAIBootcamp2020Lisboa-Rock, Paper, Scissors.pptx03 GlobalAIBootcamp2020Lisboa-Rock, Paper, Scissors.pptx
03 GlobalAIBootcamp2020Lisboa-Rock, Paper, Scissors.pptx
 
BI LATAM Summit 2022 - Creación de soluciones de automatización serverless-...
BI LATAM Summit 2022 - Creación de soluciones de automatización serverless-...BI LATAM Summit 2022 - Creación de soluciones de automatización serverless-...
BI LATAM Summit 2022 - Creación de soluciones de automatización serverless-...
 
CEIAAIT - Fundamentos y Aplicaciones de Deep Learning.pdf
CEIAAIT - Fundamentos y Aplicaciones de Deep Learning.pdfCEIAAIT - Fundamentos y Aplicaciones de Deep Learning.pdf
CEIAAIT - Fundamentos y Aplicaciones de Deep Learning.pdf
 
Computo en la Nube con Azure - AI Gaming Panama.pptx
Computo en la Nube con Azure - AI Gaming Panama.pptxComputo en la Nube con Azure - AI Gaming Panama.pptx
Computo en la Nube con Azure - AI Gaming Panama.pptx
 
5StarsConf - Serverless Machine Learning con Azure Functions y ML.NET .pptx
5StarsConf - Serverless Machine Learning con Azure Functions y ML.NET .pptx5StarsConf - Serverless Machine Learning con Azure Functions y ML.NET .pptx
5StarsConf - Serverless Machine Learning con Azure Functions y ML.NET .pptx
 
ACW - Azure Speaker Recognition Biometria de Voz.pptx
ACW - Azure Speaker Recognition Biometria de Voz.pptxACW - Azure Speaker Recognition Biometria de Voz.pptx
ACW - Azure Speaker Recognition Biometria de Voz.pptx
 
UNICABA - Azure Machine Learning.pptx
UNICABA - Azure Machine Learning.pptxUNICABA - Azure Machine Learning.pptx
UNICABA - Azure Machine Learning.pptx
 
Azure Talks Bolivia - Aumente la confiabilidad de su negocio con Azure Anomal...
Azure Talks Bolivia - Aumente la confiabilidad de su negocio con Azure Anomal...Azure Talks Bolivia - Aumente la confiabilidad de su negocio con Azure Anomal...
Azure Talks Bolivia - Aumente la confiabilidad de su negocio con Azure Anomal...
 
Latino NET - Integrando WhatsApp en nuestras apps .NET con Twilio.pptx
Latino NET - Integrando WhatsApp en nuestras apps .NET con Twilio.pptxLatino NET - Integrando WhatsApp en nuestras apps .NET con Twilio.pptx
Latino NET - Integrando WhatsApp en nuestras apps .NET con Twilio.pptx
 
NOVA - Enriquecimiento de IA con Azure Cognitive Search.pptx
NOVA - Enriquecimiento de IA con Azure Cognitive Search.pptxNOVA - Enriquecimiento de IA con Azure Cognitive Search.pptx
NOVA - Enriquecimiento de IA con Azure Cognitive Search.pptx
 
Netcoreconf 2021 Realidad mixta en apps móviles con Azure Spatial Anchors y ...
Netcoreconf 2021 Realidad mixta en apps móviles con Azure Spatial Anchors y ...Netcoreconf 2021 Realidad mixta en apps móviles con Azure Spatial Anchors y ...
Netcoreconf 2021 Realidad mixta en apps móviles con Azure Spatial Anchors y ...
 
ATG Puebla - El cementerio de Microsoft.pptx
ATG Puebla - El cementerio de Microsoft.pptxATG Puebla - El cementerio de Microsoft.pptx
ATG Puebla - El cementerio de Microsoft.pptx
 
Data-Saturday-10-Sofia-2021 Azure Video Indexer- Advanced data extraction fro...
Data-Saturday-10-Sofia-2021 Azure Video Indexer- Advanced data extraction fro...Data-Saturday-10-Sofia-2021 Azure Video Indexer- Advanced data extraction fro...
Data-Saturday-10-Sofia-2021 Azure Video Indexer- Advanced data extraction fro...
 
Azure Community Conference - Image Recognition in WhatsApp chatbot with Azure...
Azure Community Conference - Image Recognition in WhatsApp chatbot with Azure...Azure Community Conference - Image Recognition in WhatsApp chatbot with Azure...
Azure Community Conference - Image Recognition in WhatsApp chatbot with Azure...
 
Real NET Docs Show - Serverless Machine Learning v3.pptx
Real NET Docs Show - Serverless Machine Learning v3.pptxReal NET Docs Show - Serverless Machine Learning v3.pptx
Real NET Docs Show - Serverless Machine Learning v3.pptx
 
Sesion 5 - Eficiencia del Rendimiento - Well Architected Backstage Tour.pptx
Sesion 5 - Eficiencia del Rendimiento - Well Architected Backstage Tour.pptxSesion 5 - Eficiencia del Rendimiento - Well Architected Backstage Tour.pptx
Sesion 5 - Eficiencia del Rendimiento - Well Architected Backstage Tour.pptx
 
XamarinExpertDay - Creating PDF files in mobile apps with PdfSharpCore and Mi...
XamarinExpertDay - Creating PDF files in mobile apps with PdfSharpCore and Mi...XamarinExpertDay - Creating PDF files in mobile apps with PdfSharpCore and Mi...
XamarinExpertDay - Creating PDF files in mobile apps with PdfSharpCore and Mi...
 
Latam Space Week - Clasificación de rocas espaciales por medio de IA.pptx
Latam Space Week - Clasificación de rocas espaciales por medio de IA.pptxLatam Space Week - Clasificación de rocas espaciales por medio de IA.pptx
Latam Space Week - Clasificación de rocas espaciales por medio de IA.pptx
 

Último

Manual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputosManual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputos
cbtechchihuahua
 
INFORMATICA Y TECNOLOGIA
INFORMATICA Y TECNOLOGIAINFORMATICA Y TECNOLOGIA
INFORMATICA Y TECNOLOGIA
renzocruz180310
 
Flows: Mejores Prácticas y Nuevos Features
Flows: Mejores Prácticas y Nuevos FeaturesFlows: Mejores Prácticas y Nuevos Features
Flows: Mejores Prácticas y Nuevos Features
Paola De la Torre
 
EXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDAD
EXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDADEXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDAD
EXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDAD
AngelCristhianMB
 
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
AMADO SALVADOR
 
Inteligencia Artificial
Inteligencia ArtificialInteligencia Artificial
Inteligencia Artificial
YashiraPaye
 
Presentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre bloggerPresentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre blogger
larapalaciosmonzon28
 
El uso de las TIC por Cecilia Pozos S..pptx
El uso de las TIC  por Cecilia Pozos S..pptxEl uso de las TIC  por Cecilia Pozos S..pptx
El uso de las TIC por Cecilia Pozos S..pptx
cecypozos703
 
Manual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computoManual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computo
mantenimientocarbra6
 
Manual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputoManual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputo
doctorsoluciones34
 
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdf
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdfPresentación Seguridad Digital Profesional Azul Oscuro (1).pdf
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdf
giampierdiaz5
 
computacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADOcomputacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADO
YaniEscobar2
 
TIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololoTIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololo
KukiiSanchez
 
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANOREVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
gisellearanguren1
 
Nuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsadNuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsad
larapalaciosmonzon28
 
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdfPLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
70244530
 
La Inteligencia Artificial en la actualidad.docx
La Inteligencia Artificial en la actualidad.docxLa Inteligencia Artificial en la actualidad.docx
La Inteligencia Artificial en la actualidad.docx
luiscohailatenazoa0
 
Second Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro TapiaSecond Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro Tapia
al050121024
 
El uso de las TIC en la vida cotidiana.pptx
El uso de las TIC en la vida cotidiana.pptxEl uso de las TIC en la vida cotidiana.pptx
El uso de las TIC en la vida cotidiana.pptx
jgvanessa23
 
625204013-64-Camino-a-----La-Lectura.pdf
625204013-64-Camino-a-----La-Lectura.pdf625204013-64-Camino-a-----La-Lectura.pdf
625204013-64-Camino-a-----La-Lectura.pdf
yuberpalma
 

Último (20)

Manual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputosManual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputos
 
INFORMATICA Y TECNOLOGIA
INFORMATICA Y TECNOLOGIAINFORMATICA Y TECNOLOGIA
INFORMATICA Y TECNOLOGIA
 
Flows: Mejores Prácticas y Nuevos Features
Flows: Mejores Prácticas y Nuevos FeaturesFlows: Mejores Prácticas y Nuevos Features
Flows: Mejores Prácticas y Nuevos Features
 
EXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDAD
EXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDADEXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDAD
EXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDAD
 
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
 
Inteligencia Artificial
Inteligencia ArtificialInteligencia Artificial
Inteligencia Artificial
 
Presentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre bloggerPresentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre blogger
 
El uso de las TIC por Cecilia Pozos S..pptx
El uso de las TIC  por Cecilia Pozos S..pptxEl uso de las TIC  por Cecilia Pozos S..pptx
El uso de las TIC por Cecilia Pozos S..pptx
 
Manual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computoManual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computo
 
Manual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputoManual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputo
 
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdf
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdfPresentación Seguridad Digital Profesional Azul Oscuro (1).pdf
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdf
 
computacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADOcomputacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADO
 
TIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololoTIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololo
 
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANOREVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
 
Nuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsadNuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsad
 
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdfPLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
 
La Inteligencia Artificial en la actualidad.docx
La Inteligencia Artificial en la actualidad.docxLa Inteligencia Artificial en la actualidad.docx
La Inteligencia Artificial en la actualidad.docx
 
Second Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro TapiaSecond Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro Tapia
 
El uso de las TIC en la vida cotidiana.pptx
El uso de las TIC en la vida cotidiana.pptxEl uso de las TIC en la vida cotidiana.pptx
El uso de las TIC en la vida cotidiana.pptx
 
625204013-64-Camino-a-----La-Lectura.pdf
625204013-64-Camino-a-----La-Lectura.pdf625204013-64-Camino-a-----La-Lectura.pdf
625204013-64-Camino-a-----La-Lectura.pdf
 

Taller IA 2A - Azure Cognitive Search

  • 1. Tutorial #1: Crea un índice de Azure Cognitive Search en Python utilizando Jupyter Notebooks En este primer tutorial se explica cómo crear, cargar y consultar un índice de Azure Cognitive Search mediante Python y las API REST del servicio cognitivo. La ejecución es en un ambiente Anaconda 3.x, pero de forma alternativa puedes utilizar Azure Jupyter Notebooks, un servicio gratuito para ejecución de scripts de Python en la nube. NOTA: Este taller está basado en el tutorial localizado en la documentación oficial. Pre-requisitos:  Anaconda 3.x, el cual contiene Python 3.x e instancias de Jupyter Notebook  O también puedes utilizar el servicio de Azure Jupyter Notebooks.  Un recurso de Azure Cognitive Search.
  • 2. Paso 1. Creación del recurso de Azure Cognitive Search a) Accede al portal de Azure (https://portal.azure.com) y busca el recurso Azure Cognitive Search: b) Da clic en el botón Create.
  • 3. c) Llena los datos solicitados y da clic en Review + create:  Grupo de recursos: taller2-rg (nuevo)  URL: Debe ser un nombre único/universal  Ubicación: West US 2  Esquema de precio: Gratuito
  • 4. d) Da clic en Create. e) Una vez generado el recurso, accede a él (desde las notificaciones o localízalo en tu suscripción)
  • 5. f) En la sección Keys, copia la llave que aparece en debajo de Primary admin key. g) También toma nota del nombre de tu recurso (taller-search-lb en este caso).
  • 6. Paso 2. Creación del proyecto de Azure Notebooks. a) Ingresa a Azure Notebooks (https://notebooks.azure.com) b) Da clic en My Projects y da clic en New Project.
  • 7. c) El nombre del proyecto es Taller-IA02. Llena el resto de los datos solicitados de la siguiente manera: d) Da clic en el botón + y selecciona Notebook:
  • 8. e) El nombre del cuaderno de trabajo es search-demo.ipynb,yellenguaje es Python3.5. Da clic en New.
  • 9. Paso 3. Creación del índice: a) Preparación A continuación, veamos el código para crear un índice de búsqueda y filtrar información. En la primer celda carga las bibliotecas para trabajar con JSON y formular las solicitudes HTTP: import json import requests from pprint import pprint En la segunda celda, introduce los elementos de solicitud que serán constantes en cada solicitud. Reemplaza el nombre del servicio de búsqueda (YOUR-SEARCH-SERVICE-NAME) y la clave de API de administración (YOUR-ADMIN-API-KEY) por los valores obtenidos al crear el recurso de Azure Cognitive Search. endpoint = 'https://<YOUR-SEARCH-SERVICE-NAME>.search.windows.net/' api_version = '?api-version=2019-05-06' headers = {'Content-Type': 'application/json', 'api-key': '<YOUR-ADMIN-API-KEY>' } En la tercera celda, realiza la petición http de tipo GET que tiene como objetivo la colección de índices del servicio de búsqueda y selecciona la propiedad de nombre de los índices existentes. url = endpoint + "indexes" + api_version + "&$select=name" response = requests.get(url, headers=headers) index_list = response.json() pprint(index_list) Ejecuta estas 3 celdas:
  • 10. b) Creación del índice Los elementos necesarios de un índice incluyen un nombre, una colección de campos y una clave. La colección de campos define la estructura de un documento. Cada campo tiene nombre, tipo y atributos que determinan cómo se usa el campo (por ejemplo, si es texto completo que se puede buscar, filtrar o recuperar en los resultados de búsqueda). Dentro de un índice, uno de los campos de tipo Edm.String se debe designar como la clave para la identidad del documento. Este índice se denomina "hotels-quickstart" y tiene las definiciones de campo que aparecen a continuación. Pega el siguiente código en una celda para proporcionar el esquema. index_schema = { "name": "hotels-quickstart", "fields": [ {"name": "HotelId", "type": "Edm.String", "key": "true", "filterable": "true"}, {"name": "HotelName", "type": "Edm.String", "searchable": "true", "filterable": "false", "sortable": "true", "facetable": "false"}, {"name": "Description", "type": "Edm.String", "searchable": "true", "filterable": "false", "sortable": "false", "facetable": "false", "analyzer": "en.lucene"}, {"name": "Description_fr", "type": "Edm.String", "searchable": "true", "filterable": "false", "sortable": "false", "facetable": "false", "analyzer": "fr.lucene"}, {"name": "Category", "type": "Edm.String", "searchable": "true", "filterable": "true", "sortable": "true", "facetable": "true"}, {"name": "Tags", "type": "Collection(Edm.String)", "searchable": "true", "filterable": "true", "sortable": "false", "facetable": "true"}, {"name": "ParkingIncluded", "type": "Edm.Boolean", "filterable": "true", "sortable": "true", "facetable": "true"}, {"name": "LastRenovationDate", "type": "Edm.DateTimeOffset", "filterable": "true", "sortable": "true", "facetable": "true"}, {"name": "Rating", "type": "Edm.Double", "filterable": "true", "sortable": "true", "facetable": "true"}, {"name": "Address", "type": "Edm.ComplexType", "fields": [ {"name": "StreetAddress", "type": "Edm.String", "filterable": "false", "sortable": "false", "facetable": "false", "searchable": "true"}, {"name": "City", "type": "Edm.String", "searchable": "true", "filterable": "true", "sortable": "true", "facetable": "true"}, {"name": "StateProvince", "type": "Edm.String", "searchable": "true", "filterable": "true", "sortable": "true", "facetable": "true"}, {"name": "PostalCode", "type": "Edm.String", "searchable": "true", "filterable": "true", "sortable": "true", "facetable": "true"}, {"name": "Country", "type": "Edm.String", "searchable": "true", "filterable": "true", "sortable": "true", "facetable": "true"} ] } ] }
  • 11. En otra celda,realiza lasolicitudhttp de tipo POST que tiene como objetivo lacolección de índices del servicio de búsqueda y crea un índice en función del esquema de índice proporcionado en la celda anterior. url = endpoint + "indexes" + api_version response = requests.post(url, headers=headers, json=index_schema) index = response.json() pprint(index) Ejecuta estas dos celdas:
  • 12. c) Carga de documentos: Para insertar documentos, usa una solicitud HTTP POST al punto de conexión de la dirección URL del índice. En una celda nueva, proporciona 4 documentos que se ajustan al esquema de índice. Especifica una acción de carga para cada documento. documents = { "value": [ { "@search.action": "upload", "HotelId": "1", "HotelName": "Secret Point Motel", "Description": "The hotel is ideally located on the main commercial artery of the city in the heart of New York. A few minutes away is Time's Square and the historic centre of the city, as well as other places of interest that make New York one of America's most attractive and cosmopolitan cities.", "Description_fr": "L'hôtel est idéalement situé sur la principale artère commerciale de la ville en plein cœur de New York. A quelques minutes se trouve la place du temps et le centre historique de la ville, ainsi que d'autres lieux d'intérêt qui font de New York l'une des villes les plus attractives et cosmopolites de l'Amérique.", "Category": "Boutique", "Tags": [ "pool", "air conditioning", "concierge" ], "ParkingIncluded": "false", "LastRenovationDate": "1970-01-18T00:00:00Z", "Rating": 3.60, "Address": { "StreetAddress": "677 5th Ave", "City": "New York", "StateProvince": "NY", "PostalCode": "10022", "Country": "USA" } }, { "@search.action": "upload", "HotelId": "2", "HotelName": "Twin Dome Motel", "Description": "The hotel is situated in a nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts.", "Description_fr": "L'hôtel est situé dans une place du XIXe siècle, qui a été agrandie et rénovée aux plus hautes normes architecturales pour créer un hôtel moderne, fonctionnel et de première classe dans lequel l'art et les éléments historiques uniques coexistent avec le confort le plus moderne.", "Category": "Boutique", "Tags": [ "pool", "free wifi", "concierge" ], "ParkingIncluded": "false",
  • 13. "LastRenovationDate": "1979-02-18T00:00:00Z", "Rating": 3.60, "Address": { "StreetAddress": "140 University Town Center Dr", "City": "Sarasota", "StateProvince": "FL", "PostalCode": "34243", "Country": "USA" } }, { "@search.action": "upload", "HotelId": "3", "HotelName": "Triple Landscape Hotel", "Description": "The Hotel stands out for its gastronomic excellence under the management of William Dough, who advises on and oversees all of the Hotel's restaurant services.", "Description_fr": "L'hôtel est situé dans une place du XIXe siècle, qui a été agrandie et rénovée aux plus hautes normes architecturales pour créer un hôtel moderne, fonctionnel et de première classe dans lequel l'art et les éléments historiques uniques coexistent avec le confort le plus moderne.", "Category": "Resort and Spa", "Tags": [ "air conditioning", "bar", "continental breakfast" ], "ParkingIncluded": "true", "LastRenovationDate": "2015-09-20T00:00:00Z", "Rating": 4.80, "Address": { "StreetAddress": "3393 Peachtree Rd", "City": "Atlanta", "StateProvince": "GA", "PostalCode": "30326", "Country": "USA" } }, { "@search.action": "upload", "HotelId": "4", "HotelName": "Sublime Cliff Hotel", "Description": "Sublime Cliff Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Cliff is part of a lovingly restored 1800 palace.", "Description_fr": "Le sublime Cliff Hotel est situé au coeur du centre historique de sublime dans un quartier extrêmement animé et vivant, à courte distance de marche des sites et monuments de la ville et est entouré par l'extraordinaire beauté des églises, des bâtiments, des commerces et Monuments. Sublime Cliff fait partie d'un Palace 1800 restauré avec amour.", "Category": "Boutique", "Tags": [ "concierge", "view", "24-hour front desk service" ], "ParkingIncluded": "true", "LastRenovationDate": "1960-02-06T00:00:00Z",
  • 14. "Rating": 4.60, "Address": { "StreetAddress": "7400 San Pedro Ave", "City": "San Antonio", "StateProvince": "TX", "PostalCode": "78216", "Country": "USA" } } ] } En otra celda, realiza la solicitud http POST que tiene como destino la colección de documentos del índice hotels-quickstart y envía los documentos proporcionados en el paso anterior. url = endpoint + "indexes/hotels-quickstart/docs/index" + api_version response = requests.post(url, headers=headers, json=documents) index_content = response.json() pprint(index_content) Ejecuta ambas celdas:
  • 15.
  • 16. d) Búsqueda en índices: Este paso muestra cómo realizar consultas en un índice con la API de REST de Azure Cognitive Search. En una celda, proporciona una expresión de consulta que ejecute una búsqueda vacía (búsqueda=*), la cual devuelve una lista no clasificada (puntuación de búsqueda=1,0) de documentos arbitrarios. De forma predeterminada, Azure Cognitive Search devuelve 50 resultados cada vez. Al ser estructurada, esta consulta devuelve la estructura y los valores del documento entero. Agrega $count=true para obtener un recuento de todos los documentos de los resultados. searchstring = '&search=*&$count=true' url = endpoint + "indexes/hotels-quickstart/docs" + api_version + searchstring response = requests.get(url, headers=headers, json=searchstring) query = response.json() pprint(query) Ejecuta y observa los resultados:
  • 17. En una celda nueva, proporciona el código siguiente para buscar los términos "hoteles" y "wifi". Agrega $select para especificar qué campos quiere incluir en los resultados de búsqueda. searchstring = '&search=hotels wifi&$count=true&$select=HotelId,HotelName' url = endpoint + "indexes/hotels-quickstart/docs" + api_version + searchstring response = requests.get(url, headers=headers, json=searchstring) query = response.json() pprint(query) Si ejecutas la celda, el resultado se muestra a continuación:
  • 18. A continuación, aplica una expresión $filter que seleccione solo aquellos hoteles con una clasificación superior a 4. searchstring = '&search=*&$filter=Rating gt 4&$select=HotelId,HotelName,Description,Rating' url = endpoint + "indexes/hotels-quickstart/docs" + api_version + searchstring response = requests.get(url, headers=headers, json=searchstring) query = response.json() pprint(query) Ejecuta y observa el resultado:
  • 19. De forma predeterminada, el motor de búsqueda devuelve los 50 documentos más importantes, pero puedes usar las subcláusulas TOP y SKIP para agregar paginación y elegir el número de documentos en cada resultado. Esta consulta devuelve dos documentos en cada conjunto de resultados. searchstring = '&search=boutique&$top=2&$select=HotelId,HotelName,Description' url = endpoint + "indexes/hotels-quickstart/docs" + api_version + searchstring response = requests.get(url, headers=headers, json=searchstring) query = response.json() pprint(query) Ejecuta la celda para comprobar:
  • 20. En este último ejemplo, use $orderby para ordenar los resultados por ciudad. En este ejemplo se incluyen los campos de la colección de direcciones. searchstring = '&search=pool&$orderby=Address/City&$select=HotelId, HotelName, Address/City, Address/StateProvince' url = endpoint + "indexes/hotels-quickstart/docs" + api_version + searchstring response = requests.get(url, headers=headers, json=searchstring) query = response.json() pprint(query)
  • 21. e) Limpieza Si has completado todo lo necesario para crear el índice, puedes eliminarlo con las siguientes líneas de código: url = endpoint + "indexes/hotels-quickstart" + api_version response = requests.delete(url, headers=headers) Eliminar índices innecesarios libera espacio. Confirma el borrado del índice ejecutando el siguiente script que lista todos los índices en tu servicio de búsqueda. Si hotels-quickstart no está listado, has eliminado exitosamente el índice creado en este tutorial. url = endpoint + "indexes" + api_version + "&$select=name" response = requests.get(url, headers=headers) index_list = response.json() pprint(index_list) Ejecuta ambas celdas y observa el resultado: