Creación de un índice (API REST de Azure AI Search)

Un índice es el medio principal de organizar y buscar documentos en Azure AI Search, de forma similar a cómo una tabla organiza los registros en una base de datos. Cada índice tiene una colección de documentos que se ajustan al esquema de índice (nombres de campo, tipos de datos y atributos), pero los índices también especifican construcciones adicionales (proveedores de sugerencias, perfiles de puntuación y configuración de CORS) que definen otros comportamientos de búsqueda.

Puede usar POST o PUT en la solicitud. Para cualquiera de ellos, el documento JSON del cuerpo de la solicitud proporciona la definición de objeto.

POST https://[servicename].search.windows.net/indexes?api-version=[api-version]  
  Content-Type: application/json
  api-key: [admin key]  

Como alternativa, puede usar PUT y especificar el nombre del índice en el URI.

PUT https://[servicename].search.windows.net/indexes/[index name]?api-version=[api-version]
  Content-Type: application/json
  api-key: [admin key]

HTTPS es necesario para todas las solicitudes de servicio. Si el índice no existe, se crea. Si ya existe, se actualiza a la nueva definición.

La creación de un índice establece el esquema y los metadatos. Rellenar el índice es una operación independiente. Para este paso, puede usar un indexador (consulte Operaciones de indexador, disponibles para orígenes de datos compatibles) o agregar , actualizar o eliminar documentos. Los índices invertidos se generan cuando se publican los documentos.

Nota

El número máximo de índices que se pueden crear varía según el nivel de precios. Para más información, consulte los límites del servicio.

Parámetros de identificador URI

Parámetro Descripción
nombre del servicio Necesario. Establézcalo en el nombre único definido por el usuario del servicio de búsqueda.
nombre de índice Obligatorio en el URI si usa PUT. El nombre debe estar en minúsculas, empezar con una letra o un número, no tener barras diagonales ni puntos y tener menos de 128 caracteres. El inicio del nombre debe comenzar con una letra o un número, pero el resto del nombre puede incluir cualquier letra, número, guiones bajos y guiones, siempre y cuando los guiones y guiones no sean consecutivos.
api-version Necesario. Consulte Versiones de API para obtener una lista de las versiones admitidas.

Encabezados de solicitud

En la siguiente tabla se describen los encabezados de solicitud obligatorios y opcionales.

Campos Descripción
Content-Type Necesario. Establézcalo en application/json
api-key Opcional si usa roles de Azure y se proporciona un token de portador en la solicitud; de lo contrario, se requiere una clave. Las solicitudes de creación deben incluir un api-key encabezado establecido en la clave de administrador (en lugar de una clave de consulta). Consulte Conexión a Azure AI Search mediante la autenticación de claves para más información.

Cuerpo de la solicitud

El cuerpo de la solicitud contiene una definición de esquema, que incluye la lista de campos de datos dentro de los documentos que se introducirán en este índice.

El siguiente JSON es una representación de alto nivel de las partes principales de la definición.

{  
  "name": (optional on PUT; required on POST) "Name of the index",  
  "fields": [  
    {  
      "name": "name_of_field",  
      "type": "Edm.String | Edm.Int32 | Edm.Int64 | Edm.Double | Edm.Boolean | Edm.DateTimeOffset | Edm.GeographyPoint | Edm.ComplexType | Collection(Edm.String) | Collection(Edm.Int32) | Collection(Edm.Int64) | Collection(Edm.Double) | Collection(Edm.Boolean) | Collection(Edm.DateTimeOffset) | Collection(Edm.GeographyPoint) | Collection(Edm.ComplexType)",  
      "searchable": true (default where applicable) | false (only Edm.String and Collection(Edm.String) fields can be searchable),  
      "filterable": true (default) | false,  
      "sortable": true (default where applicable) | false (Collection(Edm.String) fields cannot be sortable),  
      "facetable": true (default where applicable) | false (Edm.GeographyPoint fields cannot be facetable),  
      "key": true | false (default, only Edm.String fields can be keys, enable on one field only),  
      "retrievable": true (default) | false,  
      "analyzer": "name_of_analyzer_for_search_and_indexing", (only if 'searchAnalyzer' and 'indexAnalyzer' are not set)
      "searchAnalyzer": "name_of_search_analyzer", (only if 'indexAnalyzer' is set and 'analyzer' is not set)
      "indexAnalyzer": "name_of_indexing_analyzer", (only if 'searchAnalyzer' is set and 'analyzer' is not set)
      "synonymMaps": [ "name_of_synonym_map" ] (optional, only one synonym map per field is currently supported),
      "fields" : [ ... ] (optional, a list of sub-fields if this is a field of type Edm.ComplexType or Collection(Edm.ComplexType). Must be null or empty for simple fields.)
    }
  ],
  "similarity": (optional) { },
  "suggesters": (optional) [ ... ],  
  "scoringProfiles": (optional) [ ... ],  
  "analyzers":(optional) [ ... ],
  "charFilters":(optional) [ ... ],
  "tokenizers":(optional) [ ... ],
  "tokenFilters":(optional) [ ... ],
  "defaultScoringProfile": (optional) "Name of a custom scoring profile to use as the default",  
  "corsOptions": (optional) { },
  "encryptionKey":(optional) { }  
}  

La solicitud contiene las siguientes propiedades:

Propiedad Descripción
name Necesario. El nombre del índice. Un nombre de índice solo debe contener letras minúsculas, dígitos o guiones, no puede iniciar ni terminar con guiones y está limitado a 128 caracteres.
fields Necesario. Colección de campos que se incluirán en este índice, incluidos el nombre, el tipo de datos y los atributos que definen acciones permitidas en ese campo. Los tipos de datos se ajustan al modelo de datos de entidad (EDM). Para más información, consulte los tipos de datos admitidos. Debe haber un campo en la colección especificado como campo de clave . Debe ser un campo de cadena. Este campo representa el identificador único, a veces denominado id. de documento, para cada documento almacenado con el índice. Las claves de documento distinguen mayúsculas de minúsculas. Por ejemplo, un documento con la clave "abc" se considera distinto de un documento con la clave "ABC".
similarity Opcional. Para los servicios creados antes del 15 de julio de 2020, establezca esta propiedad para usar el algoritmo de clasificación BM25. Los valores válidos son "#Microsoft.Azure.Search.ClassicSimilarity" o "#Microsoft.Azure.Search.BM25Similarity". Las versiones de API que admiten esta propiedad incluyen 2020-06-30 y 2019-05-06-Preview. Para más información, consulte Clasificación de algoritmos en Azure AI Search.
proveedores de sugerencias Opcional. Se usa para las consultas autocompleted o los resultados de búsqueda sugeridos, uno por índice. Es una estructura de datos que almacena prefijos para buscar coincidencias en consultas parciales, como autocompletar y sugerencias. Consta de un name y campos compatibles con el proveedor de sugerencias que proporcionan contenido para las consultas autocompleted y los resultados sugeridos. searchMode es obligatorio y siempre se establece en analyzingInfixMatching. Especifica que la coincidencia se producirá en cualquier término de la cadena de consulta.
scoringProfiles Opcional. Se usa para la clasificación de puntuación de búsqueda personalizada. Establézcalo defaultScoringProfile para usar un perfil personalizado como predeterminado, invocado siempre que no se especifique un perfil personalizado en la cadena de consulta. Para obtener más información sobre los elementos, vea Agregar perfiles de puntuación a un índice de búsqueda y el ejemplo de la sección siguiente.
analizadores, charFilters, tokenizers, tokenFilters Opcional. Especifique estas secciones del índice si va a definir analizadores personalizados. De forma predeterminada, estas secciones son null.
defaultScoringProfile Opcional. Nombre de un perfil de puntuación personalizado que sobrescribe los comportamientos de puntuación predeterminados.
corsOptions Opcional. JavaScript del lado cliente no puede llamar a ninguna API de forma predeterminada, ya que el explorador impedirá todas las solicitudes entre orígenes. Para permitir consultas de origen cruzado en el índice, habilite CORS (uso compartido de recursos entre orígenes) estableciendo el atributo corsOptions. Por motivos de seguridad, solamente las API de consulta admiten CORS. La corsOptions sección incluye:
allowedOrigins
(Obligatorio) Una lista delimitada por comas de orígenes a los que se concederá acceso al índice, donde cada origen suele tener el formato protocol://< nombre-dominio-nombre>:<puerto> (aunque el <puerto> suele omitirse). Esto significa que cualquier código JavaScript que se sirva desde esos orígenes podrá consultar el índice (suponiendo que proporcione el valor api-key correcto). Si desea permitir el acceso a todos los orígenes, especifique * como un único elemento de la allowedOrigins matriz. Esto no se recomienda para producción, pero puede ser útil para el desarrollo o la depuración.

maxAgeInSeconds (Opcional) Los exploradores usan este valor para determinar la duración (en segundos) para almacenar en caché las respuestas preparatorias de CORS. Esto debe ser un entero no negativo. Cuanto mayor sea este valor es, mejor será el rendimiento, pero más tiempo tardarán en surtir efecto los cambios en la directiva CORS. Si no se establece, se usará una duración predeterminada de 5 minutos.
claveDeCifrado Opcional. Se usa para cifrar un mapa de sinónimos, con sus propias claves, administradas en azure Key Vault. Disponible para los servicios de búsqueda facturables creados en o después de 2019-01-01.

Una encryptionKey sección contiene un elemento definido por keyVaultKeyName el usuario (obligatorio), un generado keyVaultKeyVersion por el sistema (obligatorio) y un elemento que keyVaultUri proporciona la clave (obligatorio, también denominado nombre DNS). Un URI de ejemplo podría ser "https://my-keyvault-name.vault.azure.net".

Opcionalmente, puede especificar accessCredentials si no usa una identidad de sistema administrada. Las propiedades de accessCredentials incluyen applicationId (Microsoft Entra ID identificador de aplicación al que se concedieron permisos de acceso a la Key Vault de Azure especificada) y applicationSecret (clave de autenticación de la aplicación registrada). Un ejemplo de la sección siguiente ilustra la sintaxis.

Definiciones de campo

Los atributos siguientes se pueden establecer en un campo al crear un índice.

Atributo Descripción
name Necesario. Establece el nombre del campo, que debe ser único dentro de la colección de campos del índice o campo primario.
type Necesario. Establece el tipo de datos para el campo. Los campos pueden ser simples o complejos. Los campos simples son de tipos primitivos, como Edm.String para texto o Edm.Int32 para enteros. Los campos complejos pueden tener subprocesos que son simples o complejos. Esto le permite modelar objetos y matrices de objetos, lo que a su vez le permite cargar la mayoría de las estructuras de objetos JSON en el índice. Consulte Tipos de datos admitidos (Azure AI Search) para obtener la lista completa de tipos admitidos.
key Necesario. Establezca este atributo en true para designar que los valores de un campo identifiquen de forma única los documentos del índice. La longitud máxima de los valores de un campo de clave es de 1024 caracteres. Se debe elegir exactamente un campo de nivel superior en cada índice como campo clave y debe ser de tipo Edm.String. El valor predeterminado es false para campos simples y null para campos complejos.

Los campos clave se pueden usar para buscar documentos directamente y actualizar o eliminar documentos específicos. Los valores de los campos clave se controlan de una manera que distingue mayúsculas de minúsculas al buscar o indexar documentos. Consulte Documento de búsqueda (API REST de Azure AI Search) y Adición, actualización o eliminación de documentos (API REST de Azure AI Search) para más información.
retrievable Indica si el campo se puede devolver en un resultado de búsqueda. Establezca este atributo false en si desea usar un campo (por ejemplo, margen) como filtro, ordenación o mecanismo de puntuación, pero no quiere que el campo sea visible para el usuario final. Este atributo debe ser true para los campos clave y debe ser null para campos complejos. Este atributo se puede cambiar en los campos existentes. Establecer la opción recuperable true en no provoca ningún aumento en los requisitos de almacenamiento de índices. El valor predeterminado es true para campos simples y null para campos complejos.
searchable Indica si el campo es buscable de texto completo y se puede hacer referencia a este en las consultas de búsqueda. Esto significa que se somete a un análisis léxico , como la separación de palabras durante la indexación. Si establece un campo que se puede buscar en un valor como "Sunny day", internamente se normalizará y dividirá en los tokens individuales "sunny" y "day". Esto permite realizar búsquedas de texto completo de estos términos. Los campos de tipo Edm.String o Collection(Edm.String) se pueden buscar de forma predeterminada. Este atributo debe ser false para campos simples de otros tipos de datos que no son de cadena y debe ser null para campos complejos.

Un campo que permite búsquedas consume espacio adicional en el índice, ya que Azure AI Search procesará el contenido de esos campos y los organizará en estructuras de datos auxiliares para la búsqueda eficaz. Si desea ahorrar espacio en el índice y no necesita incluir un campo en las búsquedas, establezca searchable falseen . Consulte Funcionamiento de la búsqueda de texto completo en Azure AI Search para más información.
filterable Indica si se debe hacer referencia al campo en $filter las consultas. El filtrado difiere de lo que se puede buscar en la forma en que se controlan las cadenas. Los campos de tipo Edm.String o Collection(Edm.String) que se pueden filtrar no se someten a análisis léxico, por lo que las comparaciones son solo para coincidencias exactas. Por ejemplo, si establece este campo f en "Sunny day", $filter=f eq 'sunny' no encontrará coincidencias, pero $filter=f eq 'Sunny day' sí. Este atributo debe ser null para campos complejos. El valor predeterminado es true para campos simples y null para campos complejos. Para reducir el tamaño del índice, establezca este atributo false en en los campos en los que no se va a filtrar.
sortable Indica si se debe hacer referencia al campo en $orderby expresiones. De forma predeterminada, Azure AI Search ordena los resultados por puntuación, pero en muchas experiencias, los usuarios querrán ordenar por campos de los documentos. Un campo simple solo se puede ordenar si se trata de un solo valor (tiene un solo valor en el ámbito del documento primario).

Los campos de colección simples no se pueden ordenar, ya que son multivalor. Los subprocesos simples de colecciones complejas también tienen varios valores y, por tanto, no se pueden ordenar. Esto es cierto si es un campo primario inmediato o un campo antecesor, es la colección compleja. Los campos complejos no se pueden ordenar y el atributo ordenable debe ser null para estos campos. El valor predeterminado para ordenar es true para campos simples de valor único, false para campos simples con varios valores y null para campos complejos.
facetable Indica si se debe hacer referencia al campo en consultas de faceta. Normalmente se usa en una presentación de resultados de búsqueda que incluye el número de llamadas por categoría (por ejemplo, buscar cámaras digitales y ver visitas por marca, por megapíxeles, por precio, etc.). Este atributo debe ser null para campos complejos. Los campos de tipo Edm.GeographyPoint o Collection(Edm.GeographyPoint) no pueden ser facetables. El valor predeterminado es true para todos los demás campos simples. Para reducir el tamaño del índice, establezca este atributo false en en los campos en los que no se va a enfrentar.
Analizador Establece el analizador léxico para tokenizar cadenas durante las operaciones de indexación y consulta. Los valores válidos para esta propiedad incluyen analizadores de lenguaje, analizadores integrados y analizadores personalizados. El valor predeterminado es standard.lucene. Este atributo solo se puede usar con campos de cadena que se pueden buscar y no se puede establecer junto con searchAnalyzer o indexAnalyzer. Una vez elegido el analizador y el campo se crea en el índice, no se puede cambiar para el campo. Debe ser null para campos complejos.
searchAnalyzer Establezca esta propiedad junto con indexAnalyzer para especificar diferentes analizadores léxicos para la indexación y las consultas. Si usa esta propiedad, establezca analyzer null en y asegúrese de que indexAnalyzer está establecido en un valor permitido. Los valores válidos para esta propiedad incluyen analizadores integrados y analizadores personalizados. Este atributo solo se puede usar con campos que se pueden buscar. El analizador de búsqueda se puede actualizar en un campo existente, ya que solo se usa en tiempo de consulta. Debe ser null para campos complejos.
indexAnalyzer Establezca esta propiedad junto con searchAnalyzer para especificar diferentes analizadores léxicos para la indexación y las consultas. Si usa esta propiedad, establezca analyzer null en y asegúrese de que searchAnalyzer está establecido en un valor permitido. Los valores válidos para esta propiedad incluyen analizadores integrados y analizadores personalizados. Este atributo solo se puede usar con campos que se pueden buscar. Una vez elegido el analizador de índices, no se puede cambiar para el campo. Debe ser null para campos complejos.
synonymMaps Lista de los nombres de los mapas de sinónimos que se van a asociar a este campo. Este atributo solo se puede usar con campos que se pueden buscar. Actualmente solo se admite un mapa de sinónimos por campo. La asignación de un mapa de sinónimos a un campo garantiza que los términos de consulta destinados a ese campo se expanden en tiempo de consulta mediante las reglas del mapa de sinónimos. Este atributo se puede cambiar en los campos existentes. Debe ser null o una colección vacía para campos complejos.
fields Lista de subcampos si se trata de un campo de tipo Edm.ComplexType o Collection(Edm.ComplexType). Debe ser null o estar vacío para campos simples. Consulte Cómo modelar tipos de datos complejos en Azure AI Search para obtener más información sobre cómo y cuándo usar subprocesos.

Nota

Los campos de tipo Edm.String que son filtrables, ordenables o configurables pueden tener como máximo 32 kilobytes de longitud. Esto se debe a que los valores de estos campos se tratan como un único término de búsqueda y la longitud máxima de un término en Azure AI Search es de 32 kilobytes. Si necesita almacenar más texto que este en un único campo de cadena, tendrá que establecer explícitamente un elemento filtrable, ordenable y facetable false en en la definición del índice.

Establecer un campo como buscable, filtrable, ordenable o facetable tiene un impacto en el tamaño del índice y el rendimiento de las consultas. No establezca esos atributos en campos a los que no se hace referencia en expresiones de consulta.

Si no se establece que un campo sea buscable, filtrable, ordenable o facetable, el campo no se puede hacer referencia a él en ninguna expresión de consulta. Esto es útil para los campos que no se usan en las consultas, pero que son necesarios en los resultados de la búsqueda.

Nota

El número máximo de índices que puede crear varía según el plan de tarifa. Para más información, consulte los límites del servicio.

Response

Para una solicitud correcta, debería ver el código de estado "201 Created".

De forma predeterminada, el cuerpo de la respuesta contiene el json para la definición del índice. Sin embargo, si el encabezado de Prefer solicitud está establecido return=minimalen , el cuerpo de la respuesta está vacío y el código de estado correcto es "204 Sin contenido" en lugar de "201 Creado". Esto es cierto independientemente de si utiliza PUT o POST para crear el índice.

Ejemplos

Ejemplo: un esquema de índice

{
  "name": "hotels",  
  "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.microsoft" },
    { "name": "Description_fr", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "fr.microsoft" },
    { "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, "analyzer": "tagsAnalyzer" },
    { "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 }
        ]
    },
    { "name": "Location", "type": "Edm.GeographyPoint", "filterable": true, "sortable": true },
    { "name": "Rooms", "type": "Collection(Edm.ComplexType)", 
      "fields": [
          { "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": "Type", "type": "Edm.String", "searchable": true },
          { "name": "BaseRate", "type": "Edm.Double", "filterable": true, "facetable": true },
          { "name": "BedOptions", "type": "Edm.String", "searchable": true },
          { "name": "SleepsCount", "type": "Edm.Int32", "filterable": true, "facetable": true },
          { "name": "SmokingAllowed", "type": "Edm.Boolean", "filterable": true, "facetable": true },
          { "name": "Tags", "type": "Collection(Edm.String)", "searchable": true, "filterable": true, "facetable": true, "analyzer": "tagsAnalyzer" }
        ]
    }
  ],
  "suggesters": [
      { "name": "sg", "searchMode": "analyzingInfixMatching", "sourceFields": ["HotelName"] }
  ],
  "analyzers": [
    {
      "@odata.type": "#Microsoft.Azure.Search.CustomAnalyzer",
      "name": "tagsAnalyzer",
      "charFilters": [ "html_strip" ],
      "tokenizer": "standard_v2"
    }
  ]
}  

Ejemplo: Proveedores de sugerencias

 "suggesters": [  
   {  
     "name": "name of suggester",  
     "searchMode": "analyzingInfixMatching",  
     "sourceFields": ["field1", "field2", ...]  
   }  
 ]

Se hace referencia a un proveedor de sugerencias por nombre en las solicitudes de consulta que incluyen la API de sugerencias o la API de autocompletar, en función de si desea devolver una coincidencia o el resto de un término de consulta. Para obtener más información sobre cómo crear y usar un proveedor de sugerencias, vea Crear un proveedor de sugerencias.

Ejemplo: similitud para la relevancia de la búsqueda

Esta propiedad establece el algoritmo de clasificación utilizado para crear una puntuación de relevancia en los resultados de búsqueda de una consulta de búsqueda de texto completo. En los servicios creados después del 15 de julio de 2020, esta propiedad se omite porque el algoritmo de similitud siempre es BM25. Para los servicios existentes creados antes del 15 de julio de 2020, puede participar en BM25 estableciendo esta construcción de la siguiente manera:

 "similarity": {
     "@odata.type": "#Microsoft.Azure.Search.BM25Similarity"
 }

Ejemplo: Opciones de CORS

JavaScript del lado cliente no puede llamar a ninguna API de forma predeterminada, ya que el explorador impedirá todas las solicitudes entre orígenes. Para permitir consultas entre orígenes en el índice, habilite CORS (Uso compartido de recursos entre orígenes (Wikipedia)) estableciendo el corsOptions atributo . Por motivos de seguridad, solamente las API de consulta admiten CORS.

{
   "name": "hotels",  
   "fields": [ omitted for brevity],
   "suggesters": [ omitted for brevity  ],
   "analyzers": [ omitted for brevity ],
   "corsOptions": (optional) {  
       "allowedOrigins": ["*"] | ["https://docs.microsoft.com:80", "https://azure.microsoft.com:80", ...],  
       "maxAgeInSeconds": (optional) max_age_in_seconds (non-negative integer)  
     }
}

Ejemplo: Claves de cifrado

Las claves de cifrado son claves administradas por el cliente que se usan para el cifrado adicional. Para más información, consulte Cifrado mediante claves administradas por el cliente en Azure Key Vault.

{
    "name": "hotels",  
    "fields": [ omitted for brevity],
    "suggesters": [ omitted for brevity  ],
    "analyzers": [ omitted for brevity ],
    "encryptionKey": (optional) { 
      "keyVaultKeyName": "Name of the Azure Key Vault key used for encryption",
      "keyVaultKeyVersion": "Version of the Azure Key Vault key",
      "keyVaultUri": "URI of Azure Key Vault, also referred to as DNS name, that provides the key. An example URI might be https://my-keyvault-name.vault.azure.net",
      "accessCredentials": (optional, only if not using managed system identity) {
        "applicationId": "AAD Application ID that was granted access permissions to your specified Azure Key Vault",
        "applicationSecret": "Authentication key of the specified AAD application)"}
      }
} 

Ejemplo: Perfiles de puntuación

Un perfil de puntuación es una sección del esquema que define comportamientos de puntuación personalizados que permiten influir en qué documentos aparecen más altos en los resultados de búsqueda. Los perfiles de puntuación se componen de ponderaciones de campos y de funciones. Para poder utilizarlos, especifique un perfil por nombre en la cadena de consulta. Para obtener más información, consulte Adición de perfiles de puntuación a un índice de búsqueda para obtener más información.

{
   "name": "hotels",  
   "fields": [ omitted for brevity],
   "suggesters": [ omitted for brevity  ],
   "analyzers": [ omitted for brevity ],
   "scoringProfiles": [  
   {  
     "name": "name of scoring profile",  
     "text": (optional, only applies to searchable fields) {  
       "weights": {  
         "searchable_field_name": relative_weight_value (positive #'s),  
         ...  
       }  
     },  
     "functions": (optional) [  
       {  
         "type": "magnitude | freshness | distance | tag",  
         "boost": # (positive number used as multiplier for raw score != 1),  
         "fieldName": "...",  
         "interpolation": "constant | linear (default) | quadratic | logarithmic",  
         "magnitude": {  
           "boostingRangeStart": #,  
           "boostingRangeEnd": #,  
           "constantBoostBeyondRange": true | false (default)  
         },  
         "freshness": {  
           "boostingDuration": "..." (value representing timespan leading to now over which boosting occurs)  
         },  
         "distance": {  
           "referencePointParameter": "...", (parameter to be passed in queries to use as reference location)  
           "boostingDistance": # (the distance in kilometers from the reference location where the boosting range ends)  
         },  
         "tag": {  
           "tagsParameter": "..." (parameter to be passed in queries to specify a list of tags to compare against target fields)  
         }  
       }  
     ],  
     "functionAggregation": (optional, applies only when functions are specified)   
       "sum (default) | average | minimum | maximum | firstMatching"  
       }  
 ]
}

Ejemplo: asignaciones de sinónimos

Después de crear la asignación de sinónimos en el servicio de búsqueda, puede asignarla a searchable campos de tipo Edm.String o Collection(Edm.String) en un índice. La definición de índice siguiente configura el campo "genre" para usar el mapa de sinónimos "mysynonymmap".

Puede usar Actualizar índice para agregar esta propiedad a un campo existente. Una propiedad synonymMaps de campo especifica el mapa (uno por campo). Puede actualizar las synonymMaps propiedades de los campos existentes en cualquier momento.

Consulta como de costumbre, usando términos o frases (entre comillas). En Azure AI Search, los términos de dos partes, como "bañera de hidromasaje", se deben expresar como una frase; de lo contrario, cada término se evalúa de forma independiente. Si consulta "bañera de hidromasaje", el motor de búsqueda buscará esa frase, así como cualquier sinónimo que haya definido, como jacuzzi.

POST /indexes?api-version=2020-06-30
{
    "name":"myindex",
    "fields":[
    ...
        {
            "name":"genre",
            "type":"Edm.String",
            "searchable":true,
            "analyzer":"en.lucene",
            "synonymMaps": [
                "mysynonymmap"
            ]
        }
    ]
    ...
}

Consulte también