Pages

Friday, September 1, 2017

Construye tu propio buscador en C# usando Azure Search

Azure Search es un servicio en la nube de Azure para poder hacer búsquedas indexadas sobre cualquier tipo de datos que creemos,tiene habilidades de filtrado basado en el sintaxis de  Lucene  y tiene muchas características  que esperarías de Solr o ElasticSearch.

Te mostrare como configurar tu servicio, como introducir datos y realizar búsquedas sobre esos datos. Nos saltaremos la construcción de un UI, eso lo puedes hacer usando tu tecnología favorita. Pero te mostrare el código en C# para comunicarse son el servicio de  Azure Search.


Parte 1 - Configurar tu Azure Search
Para esto necesitas una cuenta de Azure, Puedes aplicar por una cuenta gratuita para realizar tus pruebas por un periodo de tiempo. Una vez que tengas tu cuenta creada entra al portal de azure:


Una vez ahí haz click en el símbolo '+' para adicionar un nuevo servicio 
- Luego en la caja de búsqueda teclea: 'azure Search' y presiona Enter. 
- Luego haz click en 'Create'  en la parte inferior del Tab.



A continuación pongamos un nombre a nuestro servicio, el servicio puede tener mas de un indice (o tipo de datos) así que le pondremos un nombre general. Selecciona tu tipo de suscripción y haz click en  'Create'



Ahora tienes que esperar unos momentos hasta que el servicio sea deployado. Una vez creado podrás ver el servicio listado en tu dashboard. Entra al servicio haciendo click en su nombre.




Para cargar datos en nuestro servicio de busqueda necesitamos crear un Indice, Ese indice tiene que definir la estructura especifica de los datos que almacenara, asi como la configuracion de campos indexados o buscables.  (podemos tener mas de un Indice )
Asi que, haz click en 'Add Index'



Lo llamaremos 'countries' porque ese es el tipo de datos que planeamos almacenar en el. Luego haz click en 'Fields, para adicionar los siguientes campos al indice:



Marca la casilla 'retrievable' para los campos que quieres que sean devueltos en un resultado.
Marca la casilla 'Filterable' para los campos que podrán ser consultados usando una sintaxis de filtro (por ejemplo ' age eq 10').
Marca la casilla 'searchable' en los campos que quieres que soporten una búsqueda contextual.
Una vez que termines haz click OK en los campos, y OK en la creacion del Index.
Ya casi terminamos, lo unico que necesitamos ahora es la Llave/Key para conectarnos a nuestro servicio, puedes encontrarla en la opcion keys debajo de los settings de tu servicio:



Toma nota de esas dos Llaves, ya que las necesitaras para conectarte desde tu aplicacion.
Eso es todo, cierra el portal azure y abre Visual Studio.

Parte 2 - Construye la aplicación en C#

Como demostracion vamos a usar nuestro servicio de busqueda desde una aplicacion de consola. Asi que crea un nuevo Console Project, y nombralo  'CountrySearch':



Ahora adicionaremos la librería  de Azure Search, Haz left click en el nombre de tu solución y selecciona 'Manage nuget packages for solution' luego en el Tab de Browse busca 'Azure.Search', selecciónalo e instalalo.


Ahora adicionaremos una clase que tendrá la misma estructura que nuestro indice para que podamos manejar los resultados de la búsqueda, adiciona la clase 'Country' y modificala para que se vea así:



Ahora en nuestra aplicación de consola adiciona las llaves del servicio de Azure Search para que las tengamos disponibles en nuestro ejemplo:


Ahora, a programar.

Necesitamos una instancia valida de la clase 'SearchServiceClient' esto se puede hacer con la Llave Admin (para poder hacer CRUD sobre nuestros datos) o con la Llave Query (para realizar solo busquedas).
Estas funciones crean esas instancias por nosotros:


Ahora creemos una función para llenar nuestros datos de ejemplo, adicionaremos países a nuestros servicio de Azure:


Ahora adicionemos una función para usar nuestro indice de tres maneras distintas para que puedas ver las posibilidades:


y usaremos esta función para mostrar los resultados obtenidos.




Ahora corramos nuestra aplicación de ejemplo:


como puedes ver esta es solo una pequeña muestra de la funcionalidad que provee este servicio, puedes indexar documentos enteros y realizar búsquedas realmente rápido. Espero que puedas poner herramienta a trabajar en algo util para ti.

Todo el código esta disponible aquí:


Y eso, mi amig@, es todo !

No comments:

Post a Comment