Robert Bermejo's Blog Robert Bermejo Blog

Un buscador en la nube : Azure Search (Parte 1)

Hace muy poco, en el proyecto en el que actualmente estoy,el cliente nos pidió que quería que se pudiera buscar en el contenido de los documentos pdf’s que teníamos almacenados en el Azure Blob Storage, concretamente nos pido una búsqueda estilo “Google“. Al escuchar esas palabras mi primera reacción mental fue: ¿y ahora que hago? ¿como hago esto en Azure?, mis miedos desaparición al terminar la reunión y sentarme a buscar una solución. A los cinco minutos había descubierto Azure Search� y a partir de ese momento comenzó a convertirse en uno de mis servicios favoritos� de Azure.

Así que voy a escribir una serie de posts explicando que es, para que sirve y como utilizarlo.

En el post de hoy voy a introducir Azure Search.

Azure search es un cloud search-as-a-service (un servicio de búsqueda) que nos ayuda a integrar fácilmente búsquedas en nuestras aplicaciones (web, mobile, desktop…).

Una de las características más importantes que tiene es que está basado en Lucene. Lucene es un librería que permite realizar búsquedas de texto, implementa un motor de búsqueda de alto rendimiento.

Azure Search nos permite realizar:

  • búsquedas full-text search –> realiza la búsqueda en todos los documentos existentes a partir de una palabra.
  • Suggestions –> Sugerencias para realizar el autocomplete.
  • Filtros –> Permite� refinar nuestras búsquedas.
  • Facetas (Facetes) –> Permite el refinamiento de la búsqueda mediante la selección de campos concretos. En la siguiente imagen se muestra un ejemplo de facetas.

facetes

  • Highlighting –> Al mostrar los resultado pueden ver resaltados los campos especificados.
  • Geo-Spatial –> A partir de tu búsqueda permite mostrar las localizaciones más cercanas a tu posición que coincidan con tu búsqueda, como por ejemplo: restaurantes, tiendas…
  • Azure Search detecta entre 56 lenguajes el texto introducido en la búsqueda permitiendo inferir tiempos verbales, sintaxis…
  • Permite realizar consultas inteligentes con operadores: lógicos, de � sufijo o de precedencia. También y gracias Lucene nos permite realizar consultas con expresiones regulares, por términos o por proximidad.
  • Cuando realizas las búsquedas puedes realizar paginación de los resultados, ordenación así como realizar ponderación sobre datos concretos con el fin de que aparezcan en los primeros puestos de los resultados.

¿Como funciona?

La forma de función es muy sencilla. Vamos a ver como funciona mediante un pequeño ejemplo:

  • Creamos el servicio en el portal.Vamos al portal, buscamos el servicio de Azure Search y lo creamos

.createAzureSearch1

Seleccionamos el plan que queremos según las necesidades que tengamos.

createAzureSearch2

Una vez seleccionamos el plan se creará el servicio.

createAzureSearch3

  • Crear los indices

Los índices es donde se guardará la información que añadiremos, sería como la base de datos del search, . La información que se guarda se llama documents.

Hay tres formas de crear índices:-

-Directamente en el portal.

-Por código .Net, usando la librería Microsoft.Azure.Search.

-Vía REST API.

  • Añadir documentos

Insertamos documentos, datos, a los índices de forma que podamos realizar búsquedas y ejecutar queries.

Existen dos formas de añadir o actualizar los documentos:

-Pull Model –> � Se configura para que los indices se actualicen bajo demanda o programada. Nos permite de forma sencilla indexar los cambios realizados sobre un DocumentDB, SQLAzure o Azure Blob Storage. Para más información :� https://msdn.microsoft.com/library/azure/dn946891.aspx

-Push Model –> Se añaden o actualizan los documentos “manualmente” mediante el SDK de .net o REST API.

  • ¡A buscar!

Una vez añadidos los documentos en tus indices ya puedes realizar queries de búsqueda via .NET SDK o REST API.

Conclusiones

Como podéis observar, Azure Search� es un servicio que nos da una gran potencia a la hora de añadir búsquedas inteligentes en nuestras aplicaciones sean del tipo que sean, realmente es asombroso y os ánimo a probarlo.

En el siguiente post entraré más en detalle de como crear indices, como añadirles documentos y como realizar las queries correspondientes, así que ¡no os preocupéis que hay más!


Si te parece interesante, ¡compártelo!