Formato de esquemaSchema Format

El esquema se especifica en un archivo JSON que describe la estructura de atributos de los objetos del archivo de datos utilizado para crear el índice.The schema is specified in a JSON file that describes the attribute structure of the objects in the data file used to create the index. Para cada atributo, el esquema especifica el nombre, el tipo de datos, las operaciones opcionales y la lista de sinónimos opcional.For each attribute, the schema specifies the name, data type, optional operations, and optional synonyms list. Un objeto puede tener 0 o más valores para cada atributo.An object may have 0 or more values of each attribute. A continuación se muestra un ejemplo simplificado de un dominio de publicación académico:Below is a simplified example from an academic publication domain:

{
  "attributes":[
    {"name":"Title", "type":"String"},
    {"name":"Year", "type":"Int32"},
    {"name":"Author", "type":"Composite"},
    {"name":"Author.Id", "type":"Int64", "operations":["equals"]},
    {"name":"Author.Name", "type":"String"},
    {"name":"Author.Affiliation", "type":"String"},
    {"name":"Keyword", "type":"String", "synonyms":"Keyword.syn"}
  ]
}

Los nombres de atributo son identificadores que distinguen entre mayúsculas y minúsculas que empiezan por una letra y constan únicamente de letras (A-Z), números (0-9) y guiones bajos (_).Attribute names are case-sensitive identifiers that start with a letter and consist only of letters (A-Z), numbers (0-9), and underscore (_). El atributo reservado "logprob" se utiliza para especificar las probabilidades de registro natural relativas entre objetos.The reserved "logprob" attribute is used to specify the relative natural log probabilities among objects.

Tipo de atributoAttribute Type

A continuación se muestra una lista de los tipos de datos de atributos admitidos:Below is a list of supported attribute data types:

TypeType DESCRIPCIÓNDescription OperacionesOperations EjemploExample
String Cadena (1-1024 caracteres)String (1-1024 characters) equals, starts_withequals, starts_with "hello world""hello world"
Int32 Entero de 32 bits con signoSigned 32-bit integer equals, starts_with, is_betweenequals, starts_with, is_between 20162016
Int64 Entero de 64 bits con signoSigned 64-bit integer equals, starts_with, is_betweenequals, starts_with, is_between 98765432109876543210
Double Valor de punto flotante de doble precisiónDouble-precision floating-point value equals, starts_with, is_betweenequals, starts_with, is_between 1.602e-191.602e-19
Date Fecha (de 01-01-1400 a 31-12-9999)Date (1400-01-01 to 9999-12-31) equals, is_betweenequals, is_between "2016-03-14"'2016-03-14'
Guid Identificador único globalGlobally unique identifier equalsequals "602DD052-CC47-4B23-A16A-26B52D30C05B""602DD052-CC47-4B23-A16A-26B52D30C05B"
Blob Datos comprimidos internamente no indexadosInternally compressed non-indexed data NoneNone "Permitir que todas las personas y organizaciones del mundo puedan llegar aún más lejos""Empower every person and every organization on the planet to achieve more"
Composite Composición de varios atributos secundariosComposition of multiple sub-attributes N/DN/A { "Name":"harry shum", "Affiliation":"microsoft" }{ "Name":"harry shum", "Affiliation":"microsoft" }

Los atributos de cadena se usan para representar valores de cadena que pueden formar parte de la consulta del usuario.String attributes are used to represent string values that may appear as part of the user query. Estos atributos admiten la operación equals de coincidencias exactas, así como la operación starts_with para escenarios de finalización de consultas, como, por ejemplo, la coincidencia de "micros" con "microsoft".They support the exact-match equals operation, as well as the starts_with operation for query completion scenarios, such as matching "micros" with "microsoft". En próximas versiones se admitirá la no distinción entre mayúsculas y minúsculas y la coincidencia aproximada para manejar los errores ortográficos.Case-insensitive and fuzzy matching to handle spelling errors will be supported in a future release.

Los atributos Int32/Int64/Double se usan para representar valores numéricos.Int32/Int64/Double attributes are used to represent numeric values. La operación is_between permite la compatibilidad de desigualdad (lt, le, gt, ge) en tiempo de ejecución.The is_between operation enables inequality support (lt, le, gt, ge) at run time. La operación starts_with es compatible con escenarios de finalización de consultas, como la coincidencia de "20" con "2016" o de "3,"The starts_with operation supports query completion scenarios, such as matching "20" with "2016", or "3." con "3,14".with "3.14".

Los atributos de fecha se usan para codificar eficazmente los valores de fecha.Date attributes are used to efficiently encode date values. La operación is_between permite la compatibilidad de desigualdad (lt, le, gt, ge) en tiempo de ejecución.The is_between operation enables inequality support (lt, le, gt, ge) at run time.

Los atributos de GUID se usan para representar eficazmente valores GUID con compatibilidad predeterminada con la operación equals.Guid attributes are used to efficiently represent GUID values with default support for the equals operation.

Los atributos de blobs se usan para codificar eficazmente blobs de datos potencialmente grandes para la búsqueda en tiempo de ejecución del objeto correspondiente, sin compatibilidad con ninguna operación de indexación basada en el contenido de los valores del blob.Blob attributes are used to efficiently encode potentially large data blobs for runtime lookup from the corresponding object, without support for any indexing operation based on the content of the blob values.

Atributos compuestosComposite Attributes

Los atributos compuestos se utilizan para representar una agrupación de valores de atributo.Composite attributes are used to represent a grouping of attribute values. El nombre de cada atributo secundario empieza por el nombre del atributo compuesto seguido de ".".The name of each sub-attribute starts with the name of the composite attribute followed by ".". Los valores de los atributos compuestos se especifican como un objeto JSON que contiene los valores de los atributos anidados.Values for composite attributes are specified as a JSON object containing the nested attribute values. Los atributos compuestos pueden tener varios valores de objeto.Composite attributes may have multiple object values. Sin embargo, los atributos compuestos no pueden tener atributos secundarios que sean, a su vez, atributos compuestos.However, composite attributes may not have sub-attributes that are themselves composite attributes.

En el ejemplo anterior de publicación académica, esto permite al servicio consultar los documentos por "harry shum" mientras este está en "microsoft".In the academic publication example above, this enables the service to query for papers by "harry shum" while he is at "microsoft". Sin los atributos compuestos, el servicio solo puede consultar los documentos en los que uno de los autores es "harry shum" y otro de los autores es "microsoft".Without composite attributes, the service can only query for papers where one of the authors is "harry shum" and one of the authors is at "microsoft". Para más información, consulte la información sobre consultas de composición.For more information, see Composite Queries.

Operaciones de atributoAttribute Operations

De forma predeterminada, cada atributo está indexado para admitir todas las operaciones disponibles para el tipo de datos de atributo.By default, each attribute is indexed to support all operations available to the attribute data type. Si no se requiere una operación determinada, se puede especificar explícitamente el conjunto de operaciones indexadas para reducir el tamaño del índice.If a particular operation is not required, the set of indexed operations can be explicitly specified to reduce the size of the index. En el siguiente fragmento de código del esquema de ejemplo anterior, el atributo Author.Id está indexado para que admita solo la operación equals, pero no las operaciones adicionales starts_with y is_between para los atributos Int32.In the following snippet from the example schema above, the Author.Id attribute is indexed to support only the equals operation, but not the additional starts_with and is_between operations for Int32 attributes.

{"name":"Author.Id", "type":"Int32", "operations":["equals"]}

Cuando se hace referencia a un atributo dentro de una gramática, la operación starts_with se debe especificar en el esquema para que el servicio genere finalizaciones a partir de consultas parciales.When an attribute is referenced inside a grammar, the starts_with operation needs to be specified in the schema in order for the service to generate completions from partial queries.

Sinónimos de atributoAttribute Synonyms

A menudo, es conveniente hacer referencia a un valor de atributo de cadena determinado mediante un sinónimo.It is often desirable to refer to a particular string attribute value by a synonym. Por ejemplo, los usuarios pueden referirse a "Microsoft" como "MSFT" o "MS".For example, users may refer to "Microsoft" as "MSFT" or "MS". En estos casos, la definición del atributo puede especificar el nombre de un archivo de esquema que se encuentra en el mismo directorio que este.In these cases, the attribute definition can specify the name of a schema file located in the same directory as the schema file. Cada línea del archivo de sinónimos representa una entrada de sinónimo en el siguiente formato JSON: ["<canonical>", "<synonym>"].Each line in the synonym file represents a synonym entry in the following JSON format: ["<canonical>", "<synonym>"]. En el esquema de ejemplo, "AuthorName.syn" es un archivo JSON que contiene los valores de sinónimos para el atributo Author.Name.In the example schema, "AuthorName.syn" is a JSON file that contains synonym values for the Author.Name attribute.

{"name":"Author.Name", "type":"String", "synonyms":"AuthorName.syn"}

Un valor canónico puede tener varios sinónimos.A canonical value may have multiple synonyms. Varios valores canónicos pueden compartir un sinónimo común.Multiple canonical values may share a common synonym. En tales casos, el servicio resolverá la ambigüedad a través de varias interpretaciones.In such cases, the service will resolve the ambiguity through multiple interpretations. A continuación se muestra un archivo de sinónimos AuthorName.syn de ejemplo que se corresponde con el esquema anterior:Below is an example AuthorName.syn synonyms file corresponding to the schema above:

["harry shum","heung-yeung shum"]
["harry shum","h shum"]
["henry shum","h shum"]
...