Creación de consultas en Azure Cognitive Search
Si va a compilar una consulta por primera vez, en este artículo se describen los enfoques y los métodos para configurar la solicitud. También presenta una estructura de consulta y explica cómo los atributos de campo y los analizadores lingüísticos pueden afectar a los resultados de la consulta.
¿Qué es una solicitud de consulta?
Una consulta es una solicitud de solo lectura en la colección de documentos de un índice de búsqueda único. Especifica un parámetro "search" que contiene la expresión de consulta, formada por términos, expresiones entre comillas y operadores.
Otros parámetros de la solicitud proporcionan más definición a la consulta y respuesta. Por ejemplo, "searchFields" limita el ámbito de ejecución de consultas a campos específicos, "select" especifica los campos que se devolverán en los resultados y "count" devuelve el número de coincidencias encontradas en el índice.
En el ejemplo siguiente se ofrece una idea general de una solicitud de consulta al mostrar algunos de los parámetros disponibles. Para obtener más información sobre la composición de consultas, vea Tipos de consultas y composiciones y Documentos de búsqueda (REST).
POST https://[service name].search.windows.net/indexes/hotels-sample-index/docs/search?api-version=2020-06-30
{
"search": "NY +view",
"queryType": "simple",
"searchMode": "all",
"searchFields": "HotelName, Description, Address/City, Address/StateProvince, Tags",
"select": "HotelName, Description, Address/City, Address/StateProvince, Tags",
"count": "true"
}
Elección de un cliente
Para el desarrollo temprano y las pruebas de prueba de concepto, se recomienda comenzar con una herramienta interactiva como Azure Portal o la aplicación de escritorio de Postman para realizar llamadas a la API REST. Con estos enfoques, puede probar una solicitud de consulta de forma aislada y evaluar los efectos de diferentes propiedades sin tener que escribir ningún código.
Para llamar a la búsqueda desde una aplicación, se recomiendan las bibliotecas cliente Azure.Document.Search en los SDK de Azure para .NET, Java, JavaScript y Python.
Permisos
Una solicitud de consulta requiere permisos de lectura, concedidos a través de una clave de API que se transmite en el encabezado. Cualquier operación, incluidas las solicitudes de consulta, funcionará con una clave de API de administración , pero las solicitudes de consulta tienen la opción de usar una clave de API de consulta. Se recomiendan encarecidamente las claves de API de consulta. Puede crear hasta 50 por servicio y asignar diferentes claves a diferentes aplicaciones.
En Azure Portal, el acceso a las herramientas, asistentes y objetos integrados requieren la pertenencia al rol Colaborador o superior en el servicio de búsqueda.
Uso de Azure Portal para consultar un índice
El explorador de búsqueda (portal) es una interfaz de consulta de Azure Portal que ejecuta consultas en índices del servicio de búsqueda subyacente. Internamente, el portal realiza solicitudes de documentos de búsqueda , pero no puede invocar autocompletar, sugerencias o búsqueda de documentos.
Puede seleccionar cualquier versión de índice y API de REST, incluida la versión preliminar. Una cadena de consulta puede utilizar una sintaxis simple o completa, con compatibilidad para todos los parámetros de consulta (filter, select, searchFields, etc.). Cuando abre un índice en el portal, puede trabajar con el explorador de búsqueda junto con la definición JSON del índice en las pestañas en paralelo, para facilitar el acceso a los atributos de campo. Compruebe los campos que se pueden buscar, ordenar, filtrar y clasificar mientras se prueban las consultas.
Uso de un cliente REST
La aplicación de escritorio de Postman puede funcionar como cliente de consulta. Con la aplicación, puede conectarse a su servicio de búsqueda y enviar solicitudes de documentos de búsqueda (REST). Hay numerosos tutoriales y ejemplos que muestran los clientes REST para la consulta de la indización.
Comience con Crear un índice de búsqueda mediante REST y Postman para obtener instrucciones paso a paso sobre cómo configurar las solicitudes.
Tenga en cuenta que cada solicitud es independiente, por lo que debe proporcionar el punto de conexión, el nombre del índice y la versión de la API en cada solicitud. Otras propiedades, el tipo de contenido y la clave de API, se pasan en el encabezado de solicitud. Para obtener más información, consulte Búsqueda de documentos (REST) y obtenga ayuda con la formulación de solicitudes de consulta.
Uso de un SDK de Azure
En el caso de Cognitive Search, los SDK de Azure implementan características disponibles con carácter general. Como tal, puede utilizar cualquiera de los SDK para consultar un índice. Todos proporcionan un elemento SearchClient, que tiene métodos para interactuar con un índice, desde la carga de un índice con documentos de búsqueda hasta la formulación de solicitudes de consulta.
SDK de Azure | Cliente | Ejemplos |
---|---|---|
.NET | SearchClient | DotNetHowTo |
Java | SearchClient | SearchForDynamicDocumentsExample.java |
JavaScript | SearchClient | Pendiente. |
Python | SearchClient | sample_simple_query.py |
Elegir un tipo de consulta: simple | total
Si la consulta es una búsqueda de texto completo, se usa un analizador de consultas para procesar cualquier texto que se pase como términos y frases de búsqueda. Azure Cognitive Search ofrece dos analizadores de consultas.
El analizador simple entiende la sintaxis de consulta simple. Este analizador se seleccionó como valor predeterminado, debido a su velocidad y eficacia en las consultas de texto de forma libre. La sintaxis admite operadores de búsqueda comunes (AND, OR, NOT) en las búsquedas de términos y frases y en la búsqueda de prefijos (
*
), como "sea*" para Seattle y Seaside. Como recomendación general, pruebe primero el analizador simple y, a continuación, pase al analizador completo si los requisitos de la aplicación llaman a consultas más complejas.La sintaxis de consulta completa de Lucene que se habilita al agregar
queryType=full
a la solicitud, se basa en el analizador Apache Lucene.
La sintaxis completa y la simple se superponen hasta el punto en que ambas admiten el mismo prefijo y las mismas operaciones booleanas, pero la sintaxis completa proporciona más operadores. En su totalidad, hay más operadores para las expresiones booleanas y más operadores para consultas avanzadas como la búsqueda aproximada, la búsqueda con caracteres comodín, la búsqueda de proximidad y las expresiones regulares.
Elección de los métodos de consulta
La búsqueda es fundamentalmente un ejercicio controlado por el usuario, donde los términos o frases se recopilan de un cuadro de búsqueda o de los eventos de clic de una página. En la tabla siguiente se resumen los mecanismos mediante los cuales puede recopilar las entradas de usuario y la experiencia de búsqueda esperada.
Entrada | Experiencia |
---|---|
Método de búsqueda | El usuario escribe términos o frases en un cuadro de búsqueda, con o sin operadores, y hace clic en Buscar para enviar la solicitud. La búsqueda se puede usar con filtros en la misma solicitud, pero no con la opción de autocompletar o con sugerencias. |
Método de autocompletar | El usuario escribe unos pocos caracteres y las consultas se inician después de escribir cada carácter nuevo. La respuesta es una cadena completada del índice. Si la cadena proporcionada es válida, el usuario hace clic en Buscar para enviar la consulta al servicio. |
Método de sugerencias | Igual que sucede con la opción de autocompletar, el usuario escribe unos pocos caracteres y se generan consultas incrementales. La respuesta es una lista desplegable de documentos coincidentes, que se representa normalmente con algunos campos únicos o descriptivos. Si alguna de las selecciones es válida, el usuario hace clic en una y se devuelve el documento coincidente. |
Navegación por facetas | Una página muestra vínculos de navegación en los que se puede hacer clic o rutas de navegación que restringen el ámbito de la búsqueda. Una estructura de navegación por facetas se compone de forma dinámica en función de una consulta inicial. Por ejemplo, el valor search=* se usa para rellenar un árbol de navegación por facetas que se compone de cada categoría posible. Una estructura de navegación por facetas se crea a partir de una respuesta de consulta, pero también es un mecanismo para expresar la consulta siguiente. En una referencia de la API de REST, el valor facets se documenta como un parámetro de consulta de una operación de búsqueda de documentos, pero se puede usar sin el parámetro search . |
Método de filtro | Los filtros se usan con las facetas para restringir los resultados. Asimismo, también puede implementar un filtro en el segundo plano de la página, para inicializar, por ejemplo, la página con campos específicos del idioma. En una referencia de la API de REST, el valor $filter se documenta como un parámetro de consulta de una operación de búsqueda de documentos, pero se puede usar sin el parámetro search . |
Efecto de los atributos de campo en las consultas
Si ya conoce los tipos de consultas y su composición, puede que recuerde que los parámetros de la solicitud de consulta dependen de cómo se atribuyen los campos en un índice. Por ejemplo, solo se pueden usar campos marcados como es posible buscarlos y recuperables en las consultas y los resultados de búsqueda. Al establecer los parámetros search
, filter
y orderby
en la solicitud, debe comprobar los atributos para evitar resultados inesperados.
En la captura de pantalla siguiente del portal que muestra el índice de ejemplo Hotels, solo se pueden usar los dos últimos campos "LastRenovationDate" y "Rating" en una sola cláusula "$orderby"
.
Para ver las definiciones de atributos de campo, consulte Creación de un índice (API de REST).
Efecto de los tokens en las consultas
Durante la indexación, el motor de búsqueda usa un analizador de texto en cadenas para maximizar la posibilidad de encontrar una coincidencia en el momento de la consulta. Como mínimo, las cadenas están en minúsculas, pero, dependiendo del analizador, también pueden someterse a una lematización y detener la eliminación de palabras. Las cadenas o palabras compuestas más amplias suelen dividirse con espacios en blanco, guiones o rayas, y se indexan como tokens independientes.
El punto que hay que quitar aquí es que lo que cree que contiene el índice y lo que realmente está en él puede ser diferente. Si las consultas no devuelven resultados esperados, puede inspeccionar los tokens creados por el analizador a través de analyze Text (API REST). Para obtener más información acerca de la tokenización y el impacto en las consultas, consulte Búsqueda de términos y patrones parciales con caracteres especiales.
Pasos siguientes
Ahora que conoce mejor cómo funcionan las solicitudes de consulta, pruebe las siguientes guías de inicio rápido para obtener experiencia práctica.