SchemaformatSchema Format

Das Schema wird in einer JSON-Datei angegeben, die die Attributstruktur der Objekte in der für die Indexerstellung verwendeten Datendatei beschreibt.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. Für jedes Attribut gibt das Schema Name, Datentyp, optionale Vorgänge und die Liste der optionalen Synonyme an.For each attribute, the schema specifies the name, data type, optional operations, and optional synonyms list. Ein Objekt kann 0 oder mehr Werte der einzelnen Attribute enthalten.An object may have 0 or more values of each attribute. Im Folgenden wird ein vereinfachtes Beispiel aus einem Bereich wissenschaftlicher Veröffentlichungen vorgestellt: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"}
  ]
}

Attributnamen sind Bezeichner, bei denen die Groß-/Kleinschreibung berücksichtigt wird, die mit einem Buchstaben beginnen und ausschließlich aus Buchstaben (A-Z), Ziffern (0-9) und Unterstrichen (_) bestehen.Attribute names are case-sensitive identifiers that start with a letter and consist only of letters (A-Z), numbers (0-9), and underscore (_). Mit dem reservierten logprob-Attribut werden die Wahrscheinlichkeiten relativer natürlicher Logarithmen unter Objekten angegeben.The reserved "logprob" attribute is used to specify the relative natural log probabilities among objects.

AttributtypAttribute Type

Es folgt eine Liste der unterstützten Attributdatentypen:Below is a list of supported attribute data types:

TypeType BESCHREIBUNGDescription VorgängeOperations BeispielExample
String Zeichenfolge (1 bis 1024 Zeichen)String (1-1024 characters) equals, starts_withequals, starts_with „Hallo Welt“"hello world"
Int32 Ganze 32-Bit-Zahl mit VorzeichenSigned 32-bit integer equals, starts_with, is_betweenequals, starts_with, is_between 20162016
Int64 Ganze 64-Bit-Zahl mit VorzeichenSigned 64-bit integer equals, starts_with, is_betweenequals, starts_with, is_between 98765432109876543210
Double Gleitkommawert mit doppelter GenauigkeitDouble-precision floating-point value equals, starts_with, is_betweenequals, starts_with, is_between 1.602e-191.602e-19
Date Datum (1400-01-01 bis 9999-12-31)Date (1400-01-01 to 9999-12-31) equals, is_betweenequals, is_between „2016-03-14“'2016-03-14'
Guid GUID (Globally Unique Identifier)Globally unique identifier equalsequals „602DD052-CC47-4B23-A16A-26B52D30C05B“"602DD052-CC47-4B23-A16A-26B52D30C05B"
Blob Intern komprimierte nicht indizierte DatenInternally compressed non-indexed data KeineNone „Unterstützen Sie jede Person und Organisation weltweit darin, ihre Ziele zu erreichen.“"Empower every person and every organization on the planet to achieve more"
Composite Komposition von mehreren untergeordneten AttributenComposition of multiple sub-attributes N/VN/A { "Name":"harry shum", "Affiliation":"microsoft" }{ "Name":"harry shum", "Affiliation":"microsoft" }

Mit Zeichenfolgenattributen werden Zeichenfolgenwerte dargestellt, die als Teil der Benutzerabfrage angezeigt werden können.String attributes are used to represent string values that may appear as part of the user query. Diese unterstützen equals-Vorgänge sowie starts_with-Vorgänge mit genauer Übereinstimmung bei Szenarien zur Vervollständigung von Abfragen. „micros“ wird beispielsweise in „microsoft“ vervollständigt.They support the exact-match equals operation, as well as the starts_with operation for query completion scenarios, such as matching "micros" with "microsoft". Unterstützung für Übereinstimmung ohne Berücksichtigung von Groß-/Kleinschreibung und Fuzzyübereinstimmung bei der Fehlerbehandlung wird in zukünftigen Releases bereitgestellt.Case-insensitive and fuzzy matching to handle spelling errors will be supported in a future release.

Int32/Int64/Double-Attribute werden zur Darstellung numerischer Werte verwendet.Int32/Int64/Double attributes are used to represent numeric values. Der is_between-Vorgang ermöglicht Unterstützung für Ungleichheit (lt, le, gt, ge) zur Laufzeit.The is_between operation enables inequality support (lt, le, gt, ge) at run time. Der starts_with-Vorgang unterstützt Szenarien zur Vervollständigung von Abfragen. „20“ wird beispielsweise in „2016“ oder „3.“The starts_with operation supports query completion scenarios, such as matching "20" with "2016", or "3." in „3.14“ vervollständigt.with "3.14".

Mit Datumsattributen werden effizient Datumswerte codiert.Date attributes are used to efficiently encode date values. Der is_between-Vorgang ermöglicht Unterstützung für Ungleichheit (lt, le, gt, ge) zur Laufzeit.The is_between operation enables inequality support (lt, le, gt, ge) at run time.

GUID-Attribute dienen zur effizienten Darstellung von GUID-Werten mit Standardunterstützung für den equals-Vorgang.Guid attributes are used to efficiently represent GUID values with default support for the equals operation.

Blobattribute werden verwendet, um potenziell große Datenblobs für Suchen zur Laufzeit mit dem entsprechenden Objekt ohne Unterstützung für Indizierungsvorgänge basierend auf dem Inhalt der Blobwerte zu codieren.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.

Zusammengesetzte AttributeComposite Attributes

Zusammengesetzte Attribute werden verwendet, um eine Gruppierung von Attributwerten darzustellen.Composite attributes are used to represent a grouping of attribute values. Der Name der einzelnen untergeordneten Attribute beginnt mit den Namen des zusammengesetzten Attributs gefolgt von „.“.The name of each sub-attribute starts with the name of the composite attribute followed by ".". Werte für zusammengesetzte Attribute werden als JSON-Objekt angegeben, das geschachtelte Attributwerte enthält.Values for composite attributes are specified as a JSON object containing the nested attribute values. Zusammengesetzte Attribute weisen möglicherweise mehrere Objektwerte auf.Composite attributes may have multiple object values. Zusammengesetzte Attribute enthalten möglicherweise jedoch keine untergeordneten Attribute, die selbst zusammengesetzte Attribute sind.However, composite attributes may not have sub-attributes that are themselves composite attributes.

Im obigen Beispiel der wissenschaftlichen Veröffentlichungen kann der Dienst hierdurch Werke mit „harry shum“ abfragen, während die Suche gleichzeitig auf „microsoft“ festgelegt ist.In the academic publication example above, this enables the service to query for papers by "harry shum" while he is at "microsoft". Ohne zusammengesetzte Attribute kann der Dienst nur Werke abfragen, bei denen einer der Autoren „harry shum“ und der andere Autor „microsoft“ ist.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". Weitere Informationen finden Sie unter Zusammengesetzte Abfragen.For more information, see Composite Queries.

AttributvorgängeAttribute Operations

Standardmäßig wird jedes Attribut zur Unterstützung aller Vorgänge indiziert, die im Attributdatentyp verfügbar sind.By default, each attribute is indexed to support all operations available to the attribute data type. Wenn ein bestimmter Vorgang nicht erforderlich ist, kann die Gruppe von indizierten Vorgängen explizit auf die Verringerung der Indexgröße festgelegt werden.If a particular operation is not required, the set of indexed operations can be explicitly specified to reduce the size of the index. Im folgenden Ausschnitt des obigen Beispielschemas wird das Author.Id-Attribut indiziert, um nur den equals-Vorgang, jedoch nicht die zusätzliche starts_with- und is_between-Vorgänge für Int32-Attribute zu unterstützen.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"]}

Wenn ein Attribut innerhalb einer Grammatik verwiesen wird, muss der starts_with-Vorgang im Schema angegeben werden, damit der Dienst Vervollständigungen von Teilabfragen generieren kann.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.

AttributsynonymeAttribute Synonyms

In der Vielzahl der Fälle empfiehlt es sich, mittels eines Synonyms auf ein bestimmtes Zeichenfolgenattributwert zu verweisen.It is often desirable to refer to a particular string attribute value by a synonym. Beispielsweise könnten Benutzer auf „Microsoft“ als „MSFT“ oder „MS“ verweisen.For example, users may refer to "Microsoft" as "MSFT" or "MS". In diesen Fällen kann die Attributdefinition den Namen einer Schemadatei angeben, die sich im selben Verzeichnis wie die Schemadatei befindet.In these cases, the attribute definition can specify the name of a schema file located in the same directory as the schema file. Jede Zeile in der Synonymdatei stellt einen Synonymeintrag im folgenden JSON-Format dar: ["<canonical>", "<synonym>"].Each line in the synonym file represents a synonym entry in the following JSON format: ["<canonical>", "<synonym>"]. Im Beispielschema ist „AuthorName.syn“ eine JSON-Datei, die Synonymwerte für das Attribut „Author.Name“ enthält.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"}

Ein kanonischer Wert kann mehrere Synonyme aufweisen.A canonical value may have multiple synonyms. Mehrere kanonische Werten können auf ein gemeinsames Synonym verweisen.Multiple canonical values may share a common synonym. In solchen Fällen löst der Dienst die Mehrdeutigkeit durch verschiedene Interpretationen auf.In such cases, the service will resolve the ambiguity through multiple interpretations. Im Folgenden wird die Beispielsynonymdatei „AuthorName.syn“ mit dem oben genannten Schema gezeigt: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"]
...