Schema

The schema definition for a data source.

JSON representation
{
  "objectDefinitions": [
    {
      object (ObjectDefinition)
    }
  ],
  "operationIds": [
    string
  ]
}
Fields
objectDefinitions[]

object (ObjectDefinition)

The list of top-level objects for the data source. The maximum number of elements is 10.

operationIds[]

string

IDs of the Long Running Operations (LROs) currently running for this schema. After modifying the schema, wait for operations to complete before indexing additional content.

ObjectDefinition

The definition for an object within a data source.

JSON representation
{
  "name": string,
  "options": {
    object (ObjectOptions)
  },
  "propertyDefinitions": [
    {
      object (PropertyDefinition)
    }
  ]
}
Fields
name

string

The name for the object, which then defines its type. Item indexing requests should set the objectType field equal to this value. For example, if name is Document, then indexing requests for items of type Document should set objectType equal to Document. Each object definition must be uniquely named within a schema. The name must start with a letter and can only contain letters (A-Z, a-z) or numbers (0-9). The maximum length is 256 characters.

options

object (ObjectOptions)

The optional object-specific options.

propertyDefinitions[]

object (PropertyDefinition)

The property definitions for the object. The maximum number of elements is 1000.

ObjectOptions

The options for an object.

JSON representation
{
  "freshnessOptions": {
    object (ObjectOptions.FreshnessOptions)
  },
  "displayOptions": {
    object (ObjectDisplayOptions)
  },
  "suggestionFilteringOperators": [
    string
  ]
}
Fields
freshnessOptions

object (ObjectOptions.FreshnessOptions)

The freshness options for an object.

displayOptions

object (ObjectDisplayOptions)

The options that determine how the object is displayed in the Cloud Search results page.

suggestionFilteringOperators[]

string

Operators that can be used to filter suggestions. For query.suggest API, only operators mentioned here will be honored in the FilterOptions. Only TEXT and ENUM operators are supported.

NOTE: "objecttype", "type" and "mimetype" are already supported. This property is to configure schema specific operators.

Even though this is an array, only one operator can be specified. This is an array for future extensibility.

Operators mapping to multiple properties within the same object are not supported. If the operator spans across different object types, this option has to be set once for each object definition.

ObjectOptions.FreshnessOptions

Indicates which freshness property to use when adjusting search ranking for an item. Fresher, more recent dates indicate higher quality. Use the freshness option property that best works with your data. For fileshare documents, last modified time is most relevant. For calendar event data, the time when the event occurs is a more relevant freshness indicator. In this way, calendar events that occur closer to the time of the search query are considered higher quality and ranked accordingly.

JSON representation
{
  "freshnessProperty": string,
  "freshnessDuration": string
}
Fields
freshnessProperty

string

This property indicates the freshness level of the object in the index. If set, this property must be a top-level property within the property definitions and it must be a timestamp type or date type. Otherwise, the Indexing API uses updateTime as the freshness indicator. The maximum length is 256 characters.

When a property is used to calculate freshness, the value defaults to 2 years from the current time.

freshnessDuration

string (Duration format)

The duration after which an object should be considered stale. The default value is 180 days (in seconds).

A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s".

ObjectDisplayOptions

The display options for an object.

JSON representation
{
  "objectDisplayLabel": string,
  "metalines": [
    {
      object (ObjectDisplayOptions.Metaline)
    }
  ]
}
Fields
objectDisplayLabel

string

The user friendly label to display in the search result to indicate the type of the item. This is OPTIONAL; if not provided, an object label isn't displayed on the context line of the search results. The maximum length is 64 characters.

metalines[]

object (ObjectDisplayOptions.Metaline)

Defines the properties that are displayed in the metalines of the search results. The property values are displayed in the order given here. If a property holds multiple values, all of the values are displayed before the next properties. For this reason, it is a good practice to specify singular properties before repeated properties in this list. All of the properties must set isReturnable to true. The maximum number of metalines is 3.

ObjectDisplayOptions.Metaline

A metaline is a list of properties that are displayed along with the search result to provide context.

JSON representation
{
  "properties": [
    {
      object (ObjectDisplayOptions.DisplayedProperty)
    }
  ]
}
Fields
properties[]

object (ObjectDisplayOptions.DisplayedProperty)

The list of displayed properties for the metaline. The maximum number of properties is 5.

ObjectDisplayOptions.DisplayedProperty

A reference to a top-level property within the object that should be displayed in search results. The values of the chosen properties is displayed in the search results along with the display label for that property if one is specified. If a display label is not specified, only the values is shown.

JSON representation
{
  "propertyName": string
}
Fields
propertyName

string

The name of the top-level property as defined in a property definition for the object. If the name is not a defined property in the schema, an error is given when attempting to update the schema.

PropertyDefinition

The definition of a property within an object.

JSON representation
{
  "name": string,
  "isReturnable": boolean,
  "isRepeatable": boolean,
  "isSortable": boolean,
  "isFacetable": boolean,
  "isSuggestable": boolean,
  "isWildcardSearchable": boolean,
  "displayOptions": {
    object (PropertyDisplayOptions)
  },

  // Union field property_options can be only one of the following:
  "integerPropertyOptions": {
    object (IntegerPropertyOptions)
  },
  "doublePropertyOptions": {
    object (DoublePropertyOptions)
  },
  "timestampPropertyOptions": {
    object (TimestampPropertyOptions)
  },
  "booleanPropertyOptions": {
    object (BooleanPropertyOptions)
  },
  "objectPropertyOptions": {
    object (ObjectPropertyOptions)
  },
  "enumPropertyOptions": {
    object (EnumPropertyOptions)
  },
  "datePropertyOptions": {
    object (DatePropertyOptions)
  },
  "textPropertyOptions": {
    object (TextPropertyOptions)
  },
  "htmlPropertyOptions": {
    object (HtmlPropertyOptions)
  }
  // End of list of possible types for union field property_options.
}
Fields
name

string

The name of the property. Item indexing requests sent to the Indexing API should set the property name equal to this value. For example, if name is subject_line, then indexing requests for document items with subject fields should set the name for that field equal to subject_line. Use the name as the identifier for the object property. Once registered as a property for an object, you cannot re-use this name for another property within that object. The name must start with a letter and can only contain letters (A-Z, a-z) or numbers (0-9). The maximum length is 256 characters.

isReturnable

boolean

Indicates that the property identifies data that should be returned in search results via the Query API. If set to true, indicates that Query API users can use matching property fields in results. However, storing fields requires more space allocation and uses more bandwidth for search queries, which impacts performance over large datasets. Set to true here only if the field is needed for search results. Cannot be true for properties whose type is an object.

isRepeatable

boolean

Indicates that multiple values are allowed for the property. For example, a document only has one description but can have multiple comments. Cannot be true for properties whose type is a boolean. If set to false, properties that contain more than one value cause the indexing request for that item to be rejected.

isSortable

boolean

Indicates that the property can be used for sorting. Cannot be true for properties that are repeatable. Cannot be true for properties whose type is object. IsReturnable must be true to set this option. Only supported for boolean, date, double, integer, and timestamp properties.

isFacetable

boolean

Indicates that the property can be used for generating facets. Cannot be true for properties whose type is object. IsReturnable must be true to set this option. Only supported for boolean, enum, integer, and text properties.

isSuggestable

boolean

Indicates that the property can be used for generating query suggestions.

isWildcardSearchable

boolean

Indicates that users can perform wildcard search for this property. Only supported for Text properties. IsReturnable must be true to set this option. In a given datasource maximum of 5 properties can be marked as isWildcardSearchable. For more details, see Define object properties

displayOptions

object (PropertyDisplayOptions)

The options that determine how the property is displayed in the Cloud Search results page if it's specified to be displayed in the object's display options.

Union field property_options. The type-specific options that determine how the property is indexed and used. In the case where the options should be the default options for a type, this field must still be set to one of the types. If this field is not set, schema updates are rejected. property_options can be only one of the following:
integerPropertyOptions

object (IntegerPropertyOptions)

doublePropertyOptions

object (DoublePropertyOptions)

timestampPropertyOptions

object (TimestampPropertyOptions)

booleanPropertyOptions

object (BooleanPropertyOptions)

objectPropertyOptions

object (ObjectPropertyOptions)

enumPropertyOptions

object (EnumPropertyOptions)

datePropertyOptions

object (DatePropertyOptions)

textPropertyOptions

object (TextPropertyOptions)

htmlPropertyOptions

object (HtmlPropertyOptions)

IntegerPropertyOptions

The options for integer properties.

JSON representation
{
  "orderedRanking": enum (IntegerPropertyOptions.OrderedRanking),
  "minimumValue": string,
  "maximumValue": string,
  "operatorOptions": {
    object (IntegerPropertyOptions.IntegerOperatorOptions)
  },
  "integerFacetingOptions": {
    object (IntegerFacetingOptions)
  }
}
Fields
orderedRanking

enum (IntegerPropertyOptions.OrderedRanking)

Used to specify the ordered ranking for the integer. Can only be used if isRepeatable is false.

minimumValue

string (Int64Value format)

The minimum value of the property. The minimum and maximum values for the property are used to rank results according to the ordered ranking. Indexing requests with values less than the minimum are accepted and ranked with the same weight as items indexed with the minimum value.

maximumValue

string (Int64Value format)

The maximum value of the property. The minimum and maximum values for the property are used to rank results according to the ordered ranking. Indexing requests with values greater than the maximum are accepted and ranked with the same weight as items indexed with the maximum value.

operatorOptions

object (IntegerPropertyOptions.IntegerOperatorOptions)

If set, describes how the integer should be used as a search operator.

integerFacetingOptions

object (IntegerFacetingOptions)

If set, describes integer faceting options for the given integer property. The corresponding integer property should be marked isFacetable.

IntegerPropertyOptions.OrderedRanking

Used to specify how an integer value should be ranked relative to other values. An integer with a higher ordered ranking suggests greater importance. For example, in some data sources lower priority indicates higher importance while in others a higher priority indicates higher importance.

Enums
NO_ORDER There is no ranking order for the property. Results are not adjusted by this property's value.
ASCENDING This property is ranked in ascending order. Lower values indicate lower ranking.
DESCENDING This property is ranked in descending order. Lower values indicate higher ranking.

IntegerPropertyOptions.IntegerOperatorOptions

Used to provide a search operator for integer properties. This is optional. query.search operators let users restrict the query to specific fields relevant to the type of item being searched.

JSON representation
{
  "operatorName": string,
  "lessThanOperatorName": string,
  "greaterThanOperatorName": string
}
Fields
operatorName

string

Indicates the operator name required in the query in order to isolate the integer property. For example, if operatorName is priority and the property's name is priorityVal, then queries like priority:<value> show results only where the value of the property named priorityVal matches <value>. By contrast, a search that uses the same <value> without an operator returns all items where <value> matches the value of any String properties or text within the content field for the item. The operator name can only contain lowercase letters (a-z). The maximum length is 32 characters.

lessThanOperatorName

string

Indicates the operator name required in the query in order to isolate the integer property using the less-than operator. For example, if lessThanOperatorName is prioritybelow and the property's name is priorityVal, then queries like prioritybelow:<value> show results only where the value of the property named priorityVal is less than <value>. The operator name can only contain lowercase letters (a-z). The maximum length is 32 characters.

greaterThanOperatorName

string

Indicates the operator name required in the query in order to isolate the integer property using the greater-than operator. For example, if greaterThanOperatorName is priorityabove and the property's name is priorityVal, then queries like priorityabove:<value> show results only where the value of the property named priorityVal is greater than <value>. The operator name can only contain lowercase letters (a-z). The maximum length is 32 characters.

DoublePropertyOptions

The options for double properties.

JSON representation
{
  "operatorOptions": {
    object (DoublePropertyOptions.DoubleOperatorOptions)
  }
}
Fields
operatorOptions

object (DoublePropertyOptions.DoubleOperatorOptions)

If set, describes how the double should be used as a search operator.

DoublePropertyOptions.DoubleOperatorOptions

Used to provide a search operator for double properties. This is optional. query.search operators let users restrict the query to specific fields relevant to the type of item being searched.

JSON representation
{
  "operatorName": string
}
Fields
operatorName

string

Indicates the operator name required in the query in order to use the double property in sorting or as a facet. The operator name can only contain lowercase letters (a-z). The maximum length is 32 characters.

TimestampPropertyOptions

The options for timestamp properties.

JSON representation
{
  "operatorOptions": {
    object (TimestampPropertyOptions.TimestampOperatorOptions)
  }
}
Fields
operatorOptions

object (TimestampPropertyOptions.TimestampOperatorOptions)

If set, describes how the timestamp should be used as a search operator.

TimestampPropertyOptions.TimestampOperatorOptions

Used to provide a search operator for timestamp properties. This is optional. query.search operators let users restrict the query to specific fields relevant to the type of item being searched.

JSON representation
{
  "operatorName": string,
  "lessThanOperatorName": string,
  "greaterThanOperatorName": string
}
Fields
operatorName

string

Indicates the operator name required in the query in order to isolate the timestamp property. For example, if operatorName is closedon and the property's name is closeDate, then queries like closedon:<value> show results only where the value of the property named closeDate matches <value>. By contrast, a search that uses the same <value> without an operator returns all items where <value> matches the value of any String properties or text within the content field for the item. The operator name can only contain lowercase letters (a-z). The maximum length is 32 characters.

lessThanOperatorName

string

Indicates the operator name required in the query in order to isolate the timestamp property using the less-than operator. For example, if lessThanOperatorName is closedbefore and the property's name is closeDate, then queries like closedbefore:<value> show results only where the value of the property named closeDate is earlier than <value>. The operator name can only contain lowercase letters (a-z). The maximum length is 32 characters.

greaterThanOperatorName

string

Indicates the operator name required in the query in order to isolate the timestamp property using the greater-than operator. For example, if greaterThanOperatorName is closedafter and the property's name is closeDate, then queries like closedafter:<value> show results only where the value of the property named closeDate is later than <value>. The operator name can only contain lowercase letters (a-z). The maximum length is 32 characters.

BooleanPropertyOptions

The options for boolean properties.

JSON representation
{
  "operatorOptions": {
    object (BooleanPropertyOptions.BooleanOperatorOptions)
  }
}
Fields
operatorOptions

object (BooleanPropertyOptions.BooleanOperatorOptions)

If set, describes how the boolean should be used as a search operator.

BooleanPropertyOptions.BooleanOperatorOptions

Used to provide a search operator for boolean properties. This is optional. query.search operators let users restrict the query to specific fields relevant to the type of item being searched.

JSON representation
{
  "operatorName": string
}
Fields
operatorName

string

Indicates the operator name required in the query in order to isolate the boolean property. For example, if operatorName is closed and the property's name is isClosed, then queries like closed:<value> show results only where the value of the property named isClosed matches <value>. By contrast, a search that uses the same <value> without an operator returns all items where <value> matches the value of any String properties or text within the content field for the item. The operator name can only contain lowercase letters (a-z). The maximum length is 32 characters.

ObjectPropertyOptions

The options for object properties.

JSON representation
{
  "subobjectProperties": [
    {
      object (PropertyDefinition)
    }
  ]
}
Fields
subobjectProperties[]

object (PropertyDefinition)

The properties of the sub-object. These properties represent a nested object. For example, if this property represents a postal address, the subobjectProperties might be named street, city, and state. The maximum number of elements is 1000.

EnumPropertyOptions

The options for enum properties, which allow you to define a restricted set of strings to match user queries, set rankings for those string values, and define an operator name to be paired with those strings so that users can narrow results to only items with a specific value. For example, for items in a request tracking system with priority information, you could define p0 as an allowable enum value and tie this enum to the operator name priority so that search users could add priority:p0 to their query to restrict the set of results to only those items indexed with the value p0.

JSON representation
{
  "possibleValues": [
    {
      object (EnumPropertyOptions.EnumValuePair)
    }
  ],
  "orderedRanking": enum (EnumPropertyOptions.OrderedRanking),
  "operatorOptions": {
    object (EnumPropertyOptions.EnumOperatorOptions)
  }
}
Fields
possibleValues[]

object (EnumPropertyOptions.EnumValuePair)

The list of possible values for the enumeration property. All EnumValuePairs must provide a string value. If you specify an integer value for one EnumValuePair, then all possible EnumValuePairs must provide an integer value. Both the string value and integer value must be unique over all possible values. Once set, possible values cannot be removed or modified. If you supply an ordered ranking and think you might insert additional enum values in the future, leave gaps in the initial integer values to allow adding a value in between previously registered values. The maximum number of elements is 100.

orderedRanking

enum (EnumPropertyOptions.OrderedRanking)

Used to specify the ordered ranking for the enumeration that determines how the integer values provided in the possible EnumValuePairs are used to rank results. If specified, integer values must be provided for all possible EnumValuePair values given for this property. Can only be used if isRepeatable is false.

operatorOptions

object (EnumPropertyOptions.EnumOperatorOptions)

If set, describes how the enum should be used as a search operator.

EnumPropertyOptions.EnumValuePair

The enumeration value pair defines two things: a required string value and an optional integer value. The string value defines the necessary query term required to retrieve that item, such as p0 for a priority item. The integer value determines the ranking of that string value relative to other enumerated values for the same property. For example, you might associate p0 with 0 and define another enum pair such as p1 and 1. You must use the integer value in combination with ordered ranking to set the ranking of a given value relative to other enumerated values for the same property name. Here, a ranking order of DESCENDING for priority properties results in a ranking boost for items indexed with a value of p0 compared to items indexed with a value of p1. Without a specified ranking order, the integer value has no effect on item ranking.

JSON representation
{
  "stringValue": string,
  "integerValue": integer
}
Fields
stringValue

string

The string value of the EnumValuePair. The maximum length is 32 characters.

integerValue

integer

The integer value of the EnumValuePair which must be non-negative. Optional.

EnumPropertyOptions.OrderedRanking

Used to specify the ranking direction for an EnumValuePair integer relative to other EnumValuePair integer values. For some properties, lower integer values indicate higher importance, while in others a higher integer indicates higher importance.

Enums
NO_ORDER There is no ranking order for the property. Results aren't adjusted by this property's value.
ASCENDING This property is ranked in ascending order. Lower values indicate lower ranking.
DESCENDING This property is ranked in descending order. Lower values indicate higher ranking.

EnumPropertyOptions.EnumOperatorOptions

Used to provide a search operator for enum properties. This is optional. query.search operators let users restrict the query to specific fields relevant to the type of item being searched. For example, if you provide no operator for a priority enum property with possible values p0 and p1, a query that contains the term p0 returns items that have p0 as the value of the priority property, as well as any items that contain the string p0 in other fields. If you provide an operator name for the enum, such as priority, then search users can use that operator to refine results to only items that have p0 as this property's value, with the query priority:p0.

JSON representation
{
  "operatorName": string
}
Fields
operatorName

string

Indicates the operator name required in the query in order to isolate the enum property. For example, if operatorName is priority and the property's name is priorityVal, then queries like priority:<value> show results only where the value of the property named priorityVal matches <value>. By contrast, a search that uses the same <value> without an operator returns all items where <value> matches the value of any String properties or text within the content field for the item. The operator name can only contain lowercase letters (a-z). The maximum length is 32 characters.

DatePropertyOptions

The options for date properties.

JSON representation
{
  "operatorOptions": {
    object (DatePropertyOptions.DateOperatorOptions)
  }
}
Fields
operatorOptions

object (DatePropertyOptions.DateOperatorOptions)

If set, describes how the date should be used as a search operator.

DatePropertyOptions.DateOperatorOptions

Optional. Provides a search operator for date properties. query.search operators let users restrict the query to specific fields relevant to the type of item being searched.

JSON representation
{
  "operatorName": string,
  "lessThanOperatorName": string,
  "greaterThanOperatorName": string
}
Fields
operatorName

string

Indicates the actual string required in the query in order to isolate the date property. For example, suppose an issue tracking schema object has a property named closeDate that specifies an operator with an operatorName of closedon. For searches on that data, queries like closedon:<value> show results only where the value of the closeDate property matches <value>. By contrast, a search that uses the same <value> without an operator returns all items where <value> matches the value of any String properties or text within the content field for the indexed datasource. The operator name can only contain lowercase letters (a-z). The maximum length is 32 characters.

lessThanOperatorName

string

Indicates the operator name required in the query in order to isolate the date property using the less-than operator. For example, if lessThanOperatorName is closedbefore and the property's name is closeDate, then queries like closedbefore:<value> show results only where the value of the property named closeDate is earlier than <value>. The operator name can only contain lowercase letters (a-z). The maximum length is 32 characters.

greaterThanOperatorName

string

Indicates the operator name required in the query in order to isolate the date property using the greater-than operator. For example, if greaterThanOperatorName is closedafter and the property's name is closeDate, then queries like closedafter:<value> show results only where the value of the property named closeDate is later than <value>. The operator name can only contain lowercase letters (a-z). The maximum length is 32 characters.

TextPropertyOptions

The options for text properties.

JSON representation
{
  "retrievalImportance": {
    object (RetrievalImportance)
  },
  "operatorOptions": {
    object (TextPropertyOptions.TextOperatorOptions)
  }
}
Fields
retrievalImportance

object (RetrievalImportance)

Indicates the search quality importance of the tokens within the field when used for retrieval.

operatorOptions

object (TextPropertyOptions.TextOperatorOptions)

If set, describes how the property should be used as a search operator.

RetrievalImportance

JSON representation
{
  "importance": enum (RetrievalImportance.Importance)
}
Fields
importance

enum (RetrievalImportance.Importance)

Indicates the ranking importance given to property when it is matched during retrieval. Once set, the token importance of a property cannot be changed.

RetrievalImportance.Importance

Enums
DEFAULT Treat the match like a body text match.
HIGHEST Treat the match like a match against title of the item.
HIGH Treat the match with higher importance than body text.
LOW Treat the match with lower importance than body text.
NONE Do not match against this field during retrieval. The property can still be used for operator matching, faceting, and suggest if desired.

TextPropertyOptions.TextOperatorOptions

Used to provide a search operator for text properties. This is optional. query.search operators let users restrict the query to specific fields relevant to the type of item being searched.

JSON representation
{
  "operatorName": string,
  "exactMatchWithOperator": boolean
}
Fields
operatorName

string

Indicates the operator name required in the query in order to isolate the text property. For example, if operatorName is subject and the property's name is subjectLine, then queries like subject:<value> show results only where the value of the property named subjectLine matches <value>. By contrast, a search that uses the same <value> without an operator returns all items where <value> matches the value of any text properties or text within the content field for the item. The operator name can only contain lowercase letters (a-z). The maximum length is 32 characters.

exactMatchWithOperator

boolean

If true, the text value is tokenized as one atomic value in operator searches and facet matches. For example, if the operator name is "genre" and the value is "science-fiction" the query restrictions "genre:science" and "genre:fiction" doesn't match the item; "genre:science-fiction" does. Text value matching is case-sensitive and does not remove special characters. If false, the text is tokenized. For example, if the value is "science-fiction" the queries "genre:science" and "genre:fiction" matches the item.

HtmlPropertyOptions

The options for html properties.

JSON representation
{
  "retrievalImportance": {
    object (RetrievalImportance)
  },
  "operatorOptions": {
    object (HtmlPropertyOptions.HtmlOperatorOptions)
  }
}
Fields
retrievalImportance

object (RetrievalImportance)

Indicates the search quality importance of the tokens within the field when used for retrieval. Can only be set to DEFAULT or NONE.

operatorOptions

object (HtmlPropertyOptions.HtmlOperatorOptions)

If set, describes how the property should be used as a search operator.

HtmlPropertyOptions.HtmlOperatorOptions

Used to provide a search operator for html properties. This is optional. query.search operators let users restrict the query to specific fields relevant to the type of item being searched.

JSON representation
{
  "operatorName": string
}
Fields
operatorName

string

Indicates the operator name required in the query in order to isolate the html property. For example, if operatorName is subject and the property's name is subjectLine, then queries like subject:<value> show results only where the value of the property named subjectLine matches <value>. By contrast, a search that uses the same <value> without an operator return all items where <value> matches the value of any html properties or text within the content field for the item. The operator name can only contain lowercase letters (a-z). The maximum length is 32 characters.

PropertyDisplayOptions

The display options for a property.

JSON representation
{
  "displayLabel": string
}
Fields
displayLabel

string

The user friendly label for the property that is used if the property is specified to be displayed in ObjectDisplayOptions. If provided, the display label is shown in front of the property values when the property is part of the object display options. For example, if the property value is '1', the value by itself may not be useful context for the user. If the display name given was 'priority', then the user sees 'priority : 1' in the search results which provides clear context to search users. This is OPTIONAL; if not given, only the property values are displayed. The maximum length is 64 characters.