Microsoft Azure Search es un servicio de búsqueda de texto completo (full-text search) implementado sobre la plataforma de Microsoft Azure. Este servicio nos da la posibilidad de implementar búsquedas complejas y potentes, sin tener que preocuparnos por mantener la infraestructura, incluso sin ser expertos en búsqueda.
Un poco de historia detrás de Azure Search
Apache Lucene
Lucene Core es un proyecto hecho en Java, que provee tecnología de indexado y búsqueda, como así también chequeo ortográfico, resaltado de coincidencias y capacidad avanzada de análisis/tokenización.
Lucene.Net
Para desarrolladores del mundo .NET existe un port de Lucene: Lucene.Net, aunque el mismo está un poco por detrás de la implementación en Java (actualmente en versión 3.0.3.0 vs. 5.0.0).
Apache Solr
Solr es un servidor de búsqueda de alta performance, construido por sobre Lucene Core, con APIs XML/HTTP y JSON/Python/Ruby, resaltado de coincidencias, búsqueda facetada, caché, replicación, y una interfaz de administración web. Para implementarlo debemos manejar nuestra propia infraestructura.
Elasticsearch
Elasticsearch es un motor de búsqueda en tiempo real y analíticas, open source, flexible y distribuido, creado por Elastic. Su arquitectura está pensada desde el inicio para manejarse en ambientes distribuidos, en los que la confiabilidad y escalabilidad son absolutamente necesarias. Es orientado a documentos, libre de schema, multi-tenant, tiene alta disponibilidad, manejo de conflictos y una API RESTful, usando JSON sobre HTTP. Al igual que Solr, está construido sobre Lucene. Y también necesitamos administrar nuestra propia infraestructura.
Azure Search
Azure Search implementa Elasticsearch como un servicio, por lo cual no deberemos preocuparnos de la infraestructura necesaria para correrlo, siendo Microsoft el responsable de proveernos escalabilidad, replicación y un SLA sobre el servicio.
Características
- Full-text search: permite hacer búsquedas de texto completo de una forma rápida y eficiente. Encontrando también palabras similares, gracias al uso de los analizadores de texto de Lucene.
- Multi lenguaje: soporta más de 50 lenguajes, basándose en los analizadores definidos en Lucene, y Microsoft está añadiendo los analizadores de lenguaje natural incluidos en Office y Bing (disponibles en la versión 2015-02-28-preview). (Listado de lenguajes soportados)
- Escalable en incrementos de espacio de almacenamiento y cantidad de documentos (particiones) o en carga de consutas (réplicas). Cada réplica corre una copia del índice. Para alta disponibilidad se requiere de 2 réplicas para la carga de trabajo de consultas, y 3 réplicas para la carga de trabajo de lectura-escritura (consultas e indexado).
- Schema-free: no tenemos un esquema rígido, y podremos agregar nuevos campos a nuestro índice sin problemas.
- APIs REST con contenido en formato JSON. Hay una API para acceder al servicio, y una para gestionar el servicio.
- Filtrado: aparte de las búsquedas de texto completo, nos permite aplicar filtros sobre aquellos campos que hayan sido marcados como filtrables.
- Facetado: Una faceta (o facet) se podría definir como la categorización cuantitativa de un documento en un área determinada. Es básicamente el agrupamiento de documentos por una dimensión en particular, junto a la cantidad de elementos que la contiene.
- Geo-locación: permite realizar búsquedas basadas en una ubicación geográfica, como por ejemplo, todos los documentos que se encuentren a menos de una cierta distancia de un punto.
Niveles de servicio
Al momento de esta publicación, el servicio tiene disponibles dos niveles de servicio: Gratuito y Estándar.
¿Cómo creo el servicio?
Lo primero que haremos es ir al nuevo portal de Azure, y de ahí al botón «Nuevo», que se encuentra en la esquina inferior izquierda:
Luego elegimos la opción de «Data + storage»:
Y luego «Search»:
Completamos los datos de:
- Nombre
- Franja de precios
- Grupo de recursos
- Ubicación
Y seleccionamos «Crear»:
Con esto ya tendremos creado nuestro servicio de búsqueda!
En el próximo post, les mostraré como usar el servicio desde .NET, con el SDK oficial.
Saludos!
Actualización 30/Mar/2015: incluído link al próximo post.
¡Gran post introductorio! Espero el siguiente para implementar el servicio desde .NET 😉
Pingback: Usando Azure Search desde .NET | Guillermo Bellmann
Pingback: Sincronización de DocumentDB a Azure Search usando indexadores | Guillermo Bellmann
Pingback: Sincronización de Azure SQL Database a Azure Search usando indexadores | Guillermo Bellmann