[ms-wsp]: Windows Search Protocol Intellectual Property Rights Notice for Open Specifications Documentation




Download 349,46 Kb.
bet13/28
Sana25.03.2020
Hajmi349,46 Kb.
#8793
1   ...   9   10   11   12   13   14   15   16   ...   28

CFeedbackRestriction


The CFeedbackRestriction structure contains the number of relevant documents and a property specification for a relevance feedback query.

0

1

2

3

4

5

6

7

8

9

1

0


1

2

3

4

5

6

7

8

9

2

0


1

2

3

4

5

6

7

8

9

3

0


1

_cFeedbackDoc

_Property (variable)

...

_cFeedbackDoc (4 bytes): A 32-bit unsigned integer specifying the count of relevant documents.

_Property (variable): A CFullPropSpec structure, specifying a property.
        1. CRestrictionArray


The CRestrictionArray structure contains an array of restriction nodes. The first two fields (count and isPresent) are not padded and will start where the previous structure in the message ended (as indicated by the "previous structure" entry in the diagram below). The 1-byte length of "previous structure" is arbitrary and is not meant to suggest that count will begin on any particular boundary. However, the Restriction field MUST be aligned to begin at a multiple of 4 bytes from the beginning of the message, and hence the format is depicted as follows.

0

1

2

3

4

5

6

7

8

9

1

0


1

2

3

4

5

6

7

8

9

2

0


1

2

3

4

5

6

7

8

9

3

0


1

(previous structure)

count

isPresent

_padding (variable)

...

Restriction (variable)

...

count (1 byte): An 8-bit unsigned integer specifying the number of CRestriction records contained in the Restriction field.

Note  This field MUST be set to 0x01.

isPresent (1 byte): An 8-bit unsigned integer. MUST be set to one of the following values.

Value

Meaning

0x00

The _padding and Restriction fields are omitted.

0x01

The _padding and Restriction fields are present.

_padding (variable): This field MUST be 0 to 3 bytes in length. The length of this field MUST be such that the following field begins at an offset that is a multiple of 4 bytes from the beginning of the message that contains this structure. If this field is present (that is, length nonzero), the value it contains is arbitrary. The content of this field MUST be ignored by the receiver.

Note  This field MUST be omitted if the value of isPresent is set to 0x00.

Restriction (variable): A CRestriction structure, specifying a node of a query command tree.

Note  Restriction MUST be omitted if the value of isPresent is set to 0x00.
        1. CRestriction


The CRestriction structure contains a restriction node in a query command tree.

0

1

2

3

4

5

6

7

8

9

1

0


1

2

3

4

5

6

7

8

9

2

0


1

2

3

4

5

6

7

8

9

3

0


1

_ulType

Weight

Restriction (variable)

...

_ulType (4 bytes): A 32-bit unsigned integer indicating the restriction type used for the command tree node. The type determines what is found in the Restriction field of the structure as described below. MUST be set to one of the following values.

Value

Meaning

RTNone

0x00000000



The node contains an empty Restriction (no value). It represents a node that would evaluate to no results. If under an RTNot node, the RTNot node would evaluate to the entire set of documents. If under an RTAnd node, the RTAnd node would also evaluate to no results. If under an RTOr node, the RTOr node would evaluate to whatever it would have evaluated to if the RTNone node was not there.

RTAnd

0x00000001



The node contains a CNodeRestriction on which a logical AND operation is to be performed. The CNodeRestriction contains the other restrictions that this operation is performed on.

RTOr

0x00000002



The node contains a CNodeRestriction on which a logical OR (disjunction) operation is to be performed. The CNodeRestriction contains the other restrictions that this operation is performed on.

RTNot

0x00000003



The node contains a CRestriction on which a NOT operation is to be performed.

RTContent

0x00000004



The node contains a CContentRestriction.

RTProperty

0x00000005



The node contains a CPropertyRestriction.

RTProximity

0x00000006



The node contains a CNodeRestriction with an array of CContentRestriction structures. Any other kind of restriction is undefined. The restriction requires the words or phrases found in the CContentRestriction structures to be within the GSS defined range in order to be a match. The WSS implementation computes a rank based on how far apart the words or phrases are. Implementations of the GSS can choose to do the same.

RTVector

0x00000007



The node contains a CVectorRestriction.

RTNatLanguage

0x00000008



The node contains a CNatLanguageRestriction.

RTScope

0x00000009



The node contains a CScopeRestriction.

RTReuseWhere

0x00000011



The node contains a CReuseWhere restriction.

RTInternalProp

0x00FFFFFA



The node contains a CInternalPropertyRestriction.

RTPhrase

0x00FFFFFD



The node contains a CNodeRestriction on which a phrase match is to be performed. The restrictions in the CNodeRestriction can only be a RTContent node. Otherwise, an error MUST be returned.

RTCoerce_Add

0x0000000A



The node contains a CCoercionRestriction structure with operation ADD, as specified in section 2.2.1.12.

RTCoerce_Multiply

0x0000000B



The node contains a CCoercionRestriction with structure operation MULTIPLY, as specified in section 2.2.1.12.

RTCoerce_Absolute

0x0000000C



The node contains a CCoercionRestriction structure with operation ABSOLUTE, as specified in section 2.2.1.12.

RTProb

0x0000000D



The node contains a CProbRestriction structure.

RTFeedback

0x0000000E



The node contains a CFeedbackRestriction structure.

RTReldoc

0x0000000F



The node contains a CRelDocRestriction structure.

Weight (4 bytes): A 32-bit unsigned integer representing the weight of the node. Weight indicates the node's importance relative to other nodes in the query command tree. This weight is used to calculate the rank of each node, although the exact effect of the weight is undefined. The guidance is that results from higher-weighted nodes usually return a higher rank than results from nodes that are the same but weighted lower. Implementers of the GSS may choose the exact algorithm.

Restriction (variable): The restriction type for the command tree node. The syntax MUST be as indicated by the _ulType field.
        1. CColumnSet


The CColumnSet structure specifies the column numbers to be returned. This structure is always used in reference to a specific CPidMapper structure.

0

1

2

3

4

5

6

7

8

9

1

0


1

2

3

4

5

6

7

8

9

2

0


1

2

3

4

5

6

7

8

9

3

0


1

count

indexes (variable)

...

count (4 bytes): A 32-bit unsigned integer specifying the number of elements in the indexes array.

indexes (variable): An array of 4-byte unsigned integers each representing a zero-based index into the aPropSpec array in the corresponding CPidMapper structure. The corresponding property values are returned as columns in the result set.
        1. CCategorizationSet


The CCategorizationSet structure contains information on how the grouping is done at each level in a hierarchical result set.

0

1

2

3

4

5

6

7

8

9

1

0


1

2

3

4

5

6

7

8

9

2

0


1

2

3

4

5

6

7

8

9

3

0


1

count

categories (variable)

...

count (4 bytes): A 32-bit unsigned integer containing the number of elements in the categories array.

categories (variable): Array of CCategorizationSpec structures specifying the grouping for each level in a hierarchical query. The first structure specifies the top level.
        1. CCategorizationSpec


The CCategorizationSpec structure specifies how grouping is done at one level in a hierarchical query.

0

1

2

3

4

5

6

7

8

9

1

0


1

2

3

4

5

6

7

8

9

2

0


1

2

3

4

5

6

7

8

9

3

0


1

_csColumns (variable)

...

_Spec (variable)

...

_AggregSet (variable)

...

_SortAggregSet (variable)

...

_InGroupSortAggregSets (variable)

...

_cMaxResults

_csColumns (variable): A CColumnSet structure indicating the columns to return at that level in a hierarchical result set.

_Spec (variable): A CCategSpec structure specifying the type of categorization and the column for the group.

_AggregSet (variable): A CAggregSet structure specifying aggregate information for the group.

_SortAggregSet (variable): A CSortAggregSet structure specifying default sorting for the group.

_InGroupSortAggregSets (variable): A CInGroupSortAggregSets structure specifying sorting for the group with regard to the parent group's range boundaries.

_cMaxResults (4 bytes): A 32-bit unsigned integer. Reserved.

Note  MUST be set to 0x00000000.
        1. CCategSpec


The CCategSpec structure contains information about which grouping to perform over query results.

0

1

2

3

4

5

6

7

8

9

1

0


1

2

3

4

5

6

7

8

9

2

0


1

2

3

4

5

6

7

8

9

3

0


1

_ulCategType

_sortKey (16 bytes)

...

...

CRangeCategSpec (variable)

...

_ulCategType (4 bytes): MUST be set to one of the following values that indicates the type of grouping to perform.

Value

Meaning

CATEGORIZE_UNIQUE

0x00000000



Unique categorization. Each unique value forms a category.

CATEGORIZE_RANGE

0x00000003



Range categorization. Ranges are explicitly specified in CRangeCategSpec.

CATEGORIZE_COMPLETION

0x00000004



Categorization by completion suggestions. All the parameters for specifying how these groups are built are in CCompletionCategSpec.

_sortKey (16 bytes): A CSort structure, specifying the sort order for the group.

CRangeCategSpec (variable): A CRangeCategSpec structure specifying the range values. This field MUST be omitted if _ulCategType is set to CATEGORIZE_UNIQUE; otherwise it MUST be present.
        1. CRangeCategSpec


The CRangeCategSpec structure contains information about ranges for grouping into range-specified buckets.

0

1

2

3

4

5

6

7

8

9

1

0


1

2

3

4

5

6

7

8

9

2

0


1

2

3

4

5

6

7

8

9

3

0


1

_lcid

cRange

aRangeBegin (variable)

...

_lcid (4 bytes): A 32-bit unsigned integer. Reserved. This field can be set to any arbitrary value when sent.

cRange (4 bytes): A 32-bit unsigned integer, indicating the number of RANGEBOUNDARY structures in aRangeBegin.

aRangeBegin (variable): An array of RANGEBOUNDARY structures, specifying a set of ranges for which grouping is performed. Note that the first range is from minimum value to the boundary, represented by the first RANGEBOUNDARY structure. The next range is from where the first boundary cut off to the boundary represented by the second RANGEBOUNDARY structure, and so on. The last range includes all the items greater than the last RANGEBOUNDARY structure to the maximum value. There will be a total of cRange + 1 ranges. Values with vType set to VT_NULL and VT_EMPTY are always in the last group, regardless of sort order.
        1. RANGEBOUNDARY


The RANGEBOUNDARY structure contains a single range.

0

1

2

3

4

5

6

7

8

9

1

0


1

2

3

4

5

6

7

8

9

2

0


1

2

3

4

5

6

7

8

9

3

0


1

ulType

prVal (variable)

...

labelPresent

_padding (variable)

...

ccLabel

Label (variable)

...

ulType (4 bytes): A 32-bit unsigned integer that indicates which type of boundary is represented by this structure.

Note  MUST be set to one of the following values.

Value

Meaning

DBRANGEBOUNDTTYPE_BEFORE

0x00000000



MUST only be used for Unicode string values in prVal. Items with a value less than the Unicode string immediately preceding prVal lexicographically are included in the range.

DBRANGEBOUNDTTYPE_EXACT

0x00000001



Items with a value less than prVal are included in the range.

DBRANGEBOUNDTTYPE_AFTER

0x00000002



MUST only be used for Unicode string values in prVal. Items with a value less than the Unicode string immediately after prVal lexicographically are included in the range.

For example, two RANGEBOUNDARY structures of DBRANGEBOUND_EXACT with a prVal of "a" and DBRANGEBOUND_AFTER with a prVal of "z" could be used to partition the full Unicode range into three buckets:

  1. 1. x < "a"

  2. 2. "a" <= x <= "z"

  3. 3. x > "z"

prVal (variable): A CBaseStorageVariant structure.

Note  Indicates the value for the range boundary. If ulType is set to DBRANGEBOUNDTTYPE_BEFORE or DBRANGEBOUNDTTYPE_AFTER, then the vType field of prVal MUST be set to a string type (VT_BSTR, VT_LPWSTR, or VT_COMPRESSED_LPWSTR).

labelPresent (1 byte): An 8-bit unsigned integer. MUST be set to one of the following values.

Value

Meaning

0x00

The _padding, ccLabel, and Label fields are omitted.

0x01

The _padding, ccLabel, and Label fields are present.

_padding (variable): This field MUST be 0 to 3 bytes in length. The length of this field MUST be such that the following field begins at an offset that is a multiple of 4 bytes from the beginning of the message that contains this structure. If this field is present (that is, length is nonzero), the value it contains is arbitrary. The content of this field MUST be ignored by the receiver.

Note  This field MUST be omitted if labelPresent is set to 0x00.

ccLabel (4 bytes): A 32-bit unsigned integer representing the number of characters in the Label field.

Note  ccLabel MUST be omitted if labelPresent is set to 0x00; otherwise, it MUST be greater than zero.

Label (variable): A non-null-terminated Unicode string representing the label for this range. The ccLabel field contains the length of the string.

Note  Label MUST be omitted if labelPresent is set to 0x00; otherwise, it MUST NOT be empty.
        1. CAggregSet


The CAggregSet structure contains information about aggregates. Aggregate is a database concept for a field calculated using the information retrieved from the query. The different aggregates that are supported by GSS are defined in the CAggregSpec's type field (specified in section 2.2.1.25).

0

1

2

3

4

5

6

7

8

9

1

0


1

2

3

4

5

6

7

8

9

2

0


1

2

3

4

5

6

7

8

9

3

0


1

cCount

AggregSpecs (variable)

...

cCount (4 bytes): A 32-bit unsigned integer specifying the number of entries in AggregSpecs.

AggregSpecs (variable): An array of CAggregSpec structures, each describing individual aggregation.
        1. CAggregSpec


The CAggregSpec structure contains information about an individual aggregate.

0

1

2

3

4

5

6

7

8

9

1

0


1

2

3

4

5

6

7

8

9

2

0


1

2

3

4

5

6

7

8

9

3

0


1

type

padding

ccAlias

Alias (variable)

...

idColumn

ulMaxNumToReturn (optional)

idRepresentative (optional)

type (1 byte): An 8-bit unsigned integer specifying the type of aggregation used. The type MUST be one of the following values.

Value

Meaning

DBAGGTTYPE_BYNONE

0x00


No aggregation is used.

DBAGGTTYPE_SUM

0x01


Sum of the idColumn property value from each result in the group. Valid only for numeric properties.

DBAGGTTYPE_MAX

0x02


Maximum value of the idColumn property value from each result in the group. Valid only for numeric or filetime properties.

DBAGGTTYPE_MIN

0x03


Minimum value of the idColumn property value from each result in the group. Valid only for numeric or filetime properties.

DBAGGTTYPE_AVG

0x04


Average value of the idColumn property value from each result in the group. Valid only for numeric properties.

DBAGGTTYPE_COUNT

0x05


Count of the number of leaf results in the group.

DBAGGTTYPE_CHILDCOUNT

0x06


Count of immediate children of the group.

DBAGGTTYPE_BYFREQ

0x07


Most frequent N idColumn values from the results in the group. Additionally includes a count for how many times each value occurred and a document identifier for a result that has each returned value.

DBAGGTTYPE_FIRST

0x08


First N idColumn values from leaf results found in a group.

DBAGGTTYPE_DATERANGE

0x09


Lower and upper bounds of the idColumn values found in the group results group. Only valid for filetime properties.

DBAGGTTYPE_REPRESENTATIVEOF

0x0a


N idRepresentative values, each selected from one of the result subsets that have a unique idColumn value. Each value is also returned with a document identifier that has the idRepresentative value.

DBAGGTTYPE_EDITDISTANCE

0x0b


Edit distance between the results in a completion group and the primary query string in the Completions grouping clause, as specified in CCompletionCategSpec.

padding (3 bytes): This field MUST be 3 bytes in length, and the value it contains is arbitrary. The content of this field MUST be ignored by the receiver.

ccAlias (4 bytes): A 32-bit unsigned integer specifying the number of characters in the Alias field.

Alias (variable): A non-null-terminated Unicode string that represents the alias name for the aggregate. The ccAlias field contains the length of the string.

idColumn (4 bytes): Property ID for the column to be aggregated over.

ulMaxNumToReturn (4 bytes): An optional 32-bit unsigned integer that is the number of elements to return for First, ByFreq, and RepresentativeOf aggregates.

idRepresentative (4 bytes): An optional 32-bit unsigned integer that is the representative property ID requested for the RepresentativeOf aggregate.
        1. CSortAggregSet


The CSortAggregSet structure contains information about group sorting.

0

1

2

3

4

5

6

7

8

9

1

0


1

2

3

4

5

6

7

8

9

2

0


1

2

3

4

5

6

7

8

9

3

0


1

cCount

SortKeys (variable)

...

cCount (4 bytes): A 32-bit unsigned integer specifying the number of entries in SortKeys.

SortKeys (variable): An array of CAggregSortKey structures, each describing a sort order.
        1. CAggregSortKey


The CAggregSortKey structure contains information about sort order over single column.

0

1

2

3

4

5

6

7

8

9

1

0


1

2

3

4

5

6

7

8

9

2

0


1

2

3

4

5

6

7

8

9

3

0


1

order

ColumnSpec (variable)

...

order (4 bytes): A 32-bit unsigned integer specifying sort order. MUST be set to one of the following values.

Value

Meaning

QUERY_SORTASCEND

0x00000000



The rows are to be sorted in ascending order based on the values in the column specified.

QUERY_DESCEND

0x00000001



The rows are to be sorted in descending order based on the values in the column specified.

ColumnSpec (variable): A CAggregSpec structure specifying which column to sort by.
        1. CInGroupSortAggregSets


The CInGroupSortAggregSets structure contains information on how the group is sorted with regard to the parent's group ranges.

0

1

2

3

4

5

6

7

8

9

1

0


1

2

3

4

5

6

7

8

9

2

0


1

2

3

4

5

6

7

8

9

3

0


1

cCount

SortSets (variable)

...

cCount (4 bytes): A 32-bit unsigned integer specifying the number of entries in SortSets.

SortSets (variable): An array of CInGroupSortAggregSet structures.
        1. CInGroupSortAggregSet


A CInGroupSortAggregSet structure specifies a sort order for a single range in the parent's group.

0

1

2

3

4

5

6

7

8

9

1

0


1

2

3

4

5

6

7

8

9

2

0


1

2

3

4

5

6

7

8

9

3

0


1

type

Padding

_inGroupId (variable)

...

SortAggregSet (variable)

...

type (1 byte): An 8-bit unsigned integer specifying the type of range in the parent's group. type MUST be set to one of the following values.

Value

Meaning

GroupIdDefault

0x00


The default for all ranges.

GroupIdMinValue

0x01


The first range in the parent's group.

GroupIdNull

0x02


The last range in the parent's group.

GroupIdValue

0x03


The range with a particular range boundary value in the parent's group.

Padding (3 bytes): This field MUST be 3 bytes in length and the value it contains is arbitrary. The content of this field MUST be ignored by the receiver.

_inGroupId (variable): A CBaseStorageVariant structure that contains a value representing a range in the parent's group. This field MUST not be present if type is not equal to GroupIdValue.

SortAggregSet (variable): A CSortSet structure, specifying the sort order for the range in the parent's group.
        1. CDbColId


The CDbColId structure contains a column identifier.

0

1

2

3

4

5

6

7

8

9

1

0


1

2

3

4

5

6

7

8

9

2

0


1

2

3

4

5

6

7

8

9

3

0


1

eKind

paddingGuidAlign (variable)

...

GUID (16 bytes)

...

...

ulId

vString (variable)

...

eKind (4 bytes): MUST be set to one of the following values that indicates the contents of GUID and vValue.

Value

Meaning

DBKIND_GUID_NAME

0x00000000



vString contains a property name.

DBKIND_GUID_PROPID

0x00000001



ulId contains a 4-byte integer indicating the property ID.

paddingGuidAlign (variable): This field MUST be 0 to 8 bytes in length. The length of this field MUST be such that the following field begins at an offset that is a multiple of 8 bytes from the beginning of the message that contains this structure. If this field is present (that is, length nonzero), the value it contains is arbitrary. The content of this field MUST be ignored by the receiver.

GUID (16 bytes): The property GUID.

ulId (4 bytes): If eKind is DBKIND_GUID_PROPID, this field contains an unsigned integer specifying the property ID. If eKind is DBKIND_GUID_NAME, this field contains an unsigned integer specifying the number of Unicode characters contained in the vString field.

vString (variable): A non-null-terminated Unicode string representing the property name. It MUST be omitted unless the eKind field is set to DBKIND_GUID_NAME.
        1. CDbProp


The CDbProp structure contains a database property. These properties control how queries are interpreted by the GSS.

0

1

2

3

4

5

6

7

8

9

1

0


1

2

3

4

5

6

7

8

9

2

0


1

2

3

4

5

6

7

8

9

3

0


1

DBPROPID

DBPROPOPTIONS

DBPROPSTATUS

colid (variable)

...

vValue (variable)

...

DBPROPID (4 bytes): A 32-bit unsigned integer indicating the property ID. This field uniquely identifies each property in a particular query, but has no other interpretation.

DBPROPOPTIONS (4 bytes): Property options. This field MUST be set to 0x00000001 if the property is optional and to 0x00000000 otherwise.

DBPROPSTATUS (4 bytes): Property status.

Note  DBPROPSTATUS MUST be set to 0x00000000.

colid (variable): A CDbColId structure that defines the database property being passed.

vValue (variable): A CBaseStorageVariant containing the property value.
          1. Database Properties

This section details the properties that are used by the Windows Search Protocol to control the behavior of the GSS. These properties are grouped into three property sets, identified in the guidPropertySet field of the CDbPropSet structure.

The following table lists the properties that are part of the DBPROPSET_FSCIFRMWRK_EXT property set.



Value

Meaning

DBPROP_CI_CATALOG_NAME

0x00000002



Specifies the name of the catalog or catalogs to query. The value MUST be a VT_LPWSTR or a VT_VECTOR | VT_LPWSTR.

DBPROP_CI_INCLUDE_SCOPES

0x00000003



Specifies one or more paths to be included in the query. The value MUST be a VT_LPWSTR or a VT_VECTOR | VT_LPWSTR.

DBPROP_CI_SCOPE_FLAGS

0x00000004



Specifies how the paths specified by the DBPROP_CI_INCLUDE_SCOPES property are to be treated. The value MUST be a VT_I4 or a VT_VECTOR | VT_I4.

DBPROP_CI_QUERY_TYPE

0x00000007



Specifies the type of query using a CDbColId structure. The structure MUST be set such that the eKind field contains 0x00000001 and the GUID and ulID fields are filled with zeros.

The following table lists the flags for the DBPROP_CI_SCOPE_FLAGS property.

Value

Meaning

QUERY_DEEP

0x01


If set, indicates that files in the scope directory and all subdirectories are included in the results. If clear, only files in the scope directory are included in the results.

QUERY_VIRTUAL_Path

0x02


If set, indicates that the scope is a virtual path. If clear, indicates that the scope is a physical directory.

The following table lists the query types for the DBPROP_CI_QUERY_TYPE property.

Value

Meaning

CiNormal

0x00000000



A regular query.

The following table lists the properties that are part of the DBPROPSET_QUERYEXT property set.

Value

Meaning

DBPROP_USECONTENTINDEX

0x00000002



Use the inverted index to optimize the speed of evaluating content restrictions at the cost of the index possibly being out of date. The value MUST be a VT_BOOL. If TRUE, the server is allowed to fail these queries.

DBPROP_DEFERNONINDEXEDTRIMMING 0x00000003

Some operations, such as filtering by scope or security, can be expensive. This flag indicates that it is acceptable to defer this filtering until the results are actually requested. The value MUST be a VT_BOOL.

DBPROP_USEEXTENDEDDBTYPES 0x00000004

Indicates if the client supports VT_VECTOR data types. If TRUE, the client supports VT_VECTOR; if FALSE, the server is to convert VT_VECTOR data types to VT_ARRAY data types. The value MUST be a VT_BOOL.

DBPROP_FIRSTROWS

0x00000007



If TRUE, the GSS returns the first rows that match. If FALSE, then rows by default are returned in order of descending rank. The value MUST be a VT_BOOL.

DBPROP_ENABLEROWSETEVENTS

0x00000010



If TRUE, this indicates that the server generates rowset events that are relevant to the associated query.This value MUST be a VT_BOOL.

The following table lists the properties that are part of the DBPROPSET_CIFRMWRKCORE_EXT property set.

Value

Meaning

DBPROP_MACHINE

0x00000002



Specifies the names of the computers on which a query is to be processed. The value MUST be either VT_BSTR or VT_ARRAY | VT_BSTR.

DBPROP_CLIENT_CLSID

0x00000003



Specifies a connection constant for the GSS. The value MUST be a VT_CLSID containing 0x2A4880706FD911D0A80800A0C906241A.


        1. CDbPropSet


The CDbPropSet structure contains a set of properties. The first field (guidPropertySet) is not padded and will start where the previous structure in the message ended (as indicated by the "previous structure" entry in the diagram below). The 1-byte length of "previous structure" is arbitrary and is not meant to suggest that guidPropertySet will begin on any particular boundary. However, the cProperties field MUST be aligned to begin at a multiple of 4 bytes from the beginning of the message, and hence the format, is depicted as follows.

0

1

2

3

4

5

6

7

8

9

1

0


1

2

3

4

5

6

7

8

9

2

0


1

2

3

4

5

6

7

8

9

3

0


1

(previous structure)

guidPropertySet (16 bytes)

...

...

...

_padding (variable)

...

cProperties

aProps (variable)

...

guidPropertySet (16 bytes): A GUID identifying the property set. MUST be set to the binary form corresponding to one of the following values (shown in string representation form), identifying the property set of the properties contained in the aProps field.

Value/GUID

Meaning

DBPROPSET_FSCIFRMWRK_EXT

A9BD1526-6A80-11D0-8C9D-0020AF1D740E



File system content index framework property set.

DBPROPSET_QUERYEXT

A7AC77ED-F8D7-11CE-A798-0020F8008025



Query extension property set.

DBPROPSET_CIFRMWRKCORE_EXT

AFAFACA5-B5D1-11D0-8C62-00C04FC2DB8D



Content index framework core property set.

_padding (variable): This field MUST be 0 to 3 bytes in length. The length of this field MUST be such that the following field begins at an offset that is a multiple of 4 bytes from the beginning of the message that contains this structure. If this field is present (that is, length nonzero), the value it contains is arbitrary. The content of this field MUST be ignored by the receiver.

cProperties (4 bytes): A 32-bit unsigned integer containing the number of elements in the aProps array.

aProps (variable): An array of CDbProp structures containing properties. Structures in the array MUST be separated by 0 to 3 padding bytes such that each structure begins at an offset that is a multiple of 4 bytes from the beginning of the message that contains this array. If padding bytes are present, the value they contain is arbitrary. The content of the padding bytes MUST be ignored by the receiver.
        1. CPidMapper


The CPidMapper structure contains an array of property specifications and serves to map from a property offset to a full property specification. The more compact property offsets are used to name properties in other parts of the protocol. Since offsets are more compact, they allow shorter property references in other parts of the protocol.

0

1

2

3

4

5

6

7

8

9

1

0


1

2

3

4

5

6

7

8

9

2

0


1

2

3

4

5

6

7

8

9

3

0


1

count

paddingPropSpec (variable)

...

aPropSpec (variable)

...

count (4 bytes): A 32-bit unsigned integer containing the number of elements in the aPropSpec array.

paddingPropSpec (variable): This field MUST be 0 to 4 bytes in length. The length of this field MUST be such that the byte offset from the beginning of the message to the first structure contained in the aPropSpec field is a multiple of 8. The value of the bytes can be any arbitrary value and MUST be ignored by the receiver.

aPropSpec (variable): Array of CFullPropSpec structures indicating the properties to return. Each CFullPropSpec in the array MUST be separated by 0 to 3 padding bytes such that each structure has a 4-byte alignment from the beginning of a message. Such padding bytes can be set to any arbitrary value when sent and MUST be ignored on receipt.
        1. CColumnGroupArray


The CColumnGroupArray structure contains a set of property groups with weights for each property.

0

1

2

3

4

5

6

7

8

9

1

0


1

2

3

4

5

6

7

8

9

2

0


1

2

3

4

5

6

7

8

9

3

0


1

count

aGroupArray (variable)

...

count (4 bytes): A 32-bit unsigned integer containing the number of elements in the aGroupArray array.

aGroupArray (variable): An array of CColumnGroup structures indicating individual weights for each property, which are used in probabilistic ranking. Structures in the array MUST be separated by 0 to 3 padding bytes such that each structure has a 4-byte alignment from the beginning of a message. Such padding bytes can be set to any arbitrary value when sent and MUST be ignored on receipt.
        1. CColumnGroup


The CColumnGroup structure contains information about a property's weight in a single group.

0

1

2

3

4

5

6

7

8

9

1

0


1

2

3

4

5

6

7

8

9

2

0


1

2

3

4

5

6

7

8

9

3

0


1

count

_groupPid

Props (variable)

...

count (4 bytes): A 32-bit unsigned integer containing the number of elements in the Props array.

_groupPid (4 bytes): A 32-bit unsigned integer specifying group ID, a full property specification that can be used in the corresponding CProbRestriction. The value of _groupPid MUST satisfy the following result: (0xFFFF0000 & _groupPid) == 0x7FFF0000.

Props (variable): An array of SProperty structures, each specifying a PID and a weight for a property.
        1. SProperty


The SProperty structure contains information about single property weight.

0

1

2

3

4

5

6

7

8

9

1

0


1

2

3

4

5

6

7

8

9

2

0


1

2

3

4

5

6

7

8

9

3

0


1

_pid

_weight

_pid (4 bytes): A 32-bit unsigned integer specifying a property identifier.

_weight (4 bytes): A 32-bit unsigned integer specifying the weight to be used in probabilistic ranking.
        1. CRowSeekAt


The CRowSeekAt structure contains the offset at which to retrieve rows in a CPMGetRowsIn message.

0

1

2

3

4

5

6

7

8

9

1

0


1

2

3

4

5

6

7

8

9

2

0


1

2

3

4

5

6

7

8

9

3

0


1

_bmkOffset

_cskip

_hRegion

_bmkOffset (4 bytes): A 32-bit value representing the handle of the bookmark indicating the starting position from which to skip the number of rows specified in _cskip, before beginning retrieval.

_cskip (4 bytes): A 32-bit unsigned integer containing the number of rows to skip in the rowset.

_hRegion (4 bytes): A 32-bit unsigned integer.

Note  This field MUST be set to 0x00000000 and MUST be ignored.
        1. CRowSeekAtRatio


The CRowSeekAtRatio structure identifies the point at which to begin retrieval for a CPMGetRowsIn message.

0

1

2

3

4

5

6

7

8

9

1

0


1

2

3

4

5

6

7

8

9

2

0


1

2

3

4

5

6

7

8

9

3

0


1

_ulNumerator

_ulDenominator

_hRegion

_ulNumerator (4 bytes): A 32-bit unsigned integer representing the numerator of the ratio of rows in the chapter at which to begin retrieval.

_ulDenominator (4 bytes): A 32-bit unsigned integer representing the denominator of the ratio of rows in the chapter at which to begin retrieval. This MUST be greater than zero.

_hRegion (4 bytes): A 32-bit unsigned integer.

Note  This field MUST be set to 0x00000000 and MUST be ignored.
        1. CRowSeekByBookmark


The CRowSeekByBookmark structure identifies the bookmarks from which to begin retrieving rows for a CPMGetRowsIn message.

Note  The bookmark handles are first retrieved with a CPMGetRowsOut message. Once retrieved, they can be used, as part of the CRowSeekByBookmark structure, to retrieve the bookmarked data using a CPMGetRowsIn message.

0

1

2

3

4

5

6

7

8

9

1

0


1

2

3

4

5

6

7

8

9

2

0


1

2

3

4

5

6

7

8

9

3

0


1

_cBookmarks

_aBookmarks (variable)

...

_maxRet

_ascRet (variable)

...

_cBookmarks (4 bytes): A 32-bit unsigned integer representing the number of elements in _aBookmarks array.

_aBookmarks (variable): An array of bookmark handles (each represented by 4 bytes), as obtained from a previous CPMGetRowsOut message.

_maxRet (4 bytes): A 32-bit unsigned integer representing the number of elements in the _ascRet array.

_ascRet (variable): An array of HRESULT values. When the CRowSeekByBookmark is sent as part of the CPMGetRowsIn request, the number of entries in the array MUST be equal to _maxRet. When sent by the client, MUST be set to zero when sent and MUST be ignored on receipt. When sent by the server (as part of the CPMGetRowsOut message), the values in the array indicate the result status for each row retrieval.
        1. CRowSeekNext


The CRowSeekNext structure contains the number of rows to skip in a CPMGetRowsIn message.

0

1

2

3

4

5

6

7

8

9

1

0


1

2

3

4

5

6

7

8

9

2

0


1

2

3

4

5

6

7

8

9

3

0


1

_cskip

_cskip (4 bytes): A 32-bit unsigned integer representing the number of rows to skip in the rowset.
        1. CRowsetProperties


The CRowsetProperties structure contains configuration information for a query.

0

1

2

3

4

5

6

7

8

9

1

0


1

2

3

4

5

6

7

8

9

2

0


1

2

3

4

5

6

7

8

9

3

0


1

_uBooleanOptions

_ulMaxOpenRows

_ulMemoryUsage

_cMaxResults

_cCmdTimeout

_uBooleanOptions (4 bytes): The least significant 3 bits of this field MUST contain one of the following three values.

Value

Meaning

eSequential

0x00000001



The cursor can only be moved forward.

eLocatable

0x00000003



The cursor can be moved to any position.

eScrollable

0x00000007



The cursor can be moved to any position and fetch in any direction.

The remaining bits can be clear or set to any combination of the following values logically ORed together.

Value

Meaning

eAsynchronous

0x00000008



The client will not wait for execution completion.

eFirstRows

0x00000080



Return the first rows encountered, not the best matches.

eHoldRows

0x00000200



The server MUST NOT discard rows until the client is done with a query.

eChaptered

0x00000800



The rowset supports chapters.

eUseCI

0x00001000



Use the inverted index to evaluate content restrictions even if it is out of date. If not set, the GSS can opt to execute the query by going directly against the file system.

eDeferTrimming

0x00002000



Non-indexed trimming operations like scoping or security checking can be expensive. This option gives the GSS the option of deferring these operations until rows are actually requested.

eEnableRowsetEvents

0x00800000



Enables storage of rowset events on the server side. (For information about how to retrieve stored events, see the CPMGetRowsetNotifyIn message.)

eDoNotComputeExpensiveProps

0x00400000



Prevents computation of expensive properties. Windows implementations treat cRowsTotal, _maxRank, and _cResultsFound (as specified in CPMGetQueryStatusExOut (section 2.2.3.9)) as expensive properties. Other implementations could choose different properties and mark them as expensive.

_ulMaxOpenRows (4 bytes): A 32-bit unsigned integer.

Note  This field MUST be set to 0x00000000. It is not used and MUST be ignored.

_ulMemoryUsage (4 bytes): A 32-bit unsigned integer.

Note  This field MUST be set to 0x00000000. It is not used and MUST be ignored.

_cMaxResults (4 bytes): A 32-bit unsigned integer specifying the maximum number of rows that are to be returned for the query.

_cCmdTimeout (4 bytes): A 32-bit unsigned integer, specifying the number of seconds at which a query is to time out and automatically terminate, counting from the time the query starts executing on the server.

Note  A value of 0x00000000 means that the query is not to time out.
        1. CRowVariant


The CRowVariant structure contains the fixed-size portion of a variable length data type stored in the CPMGetRowsOut message.

0

1

2

3

4

5

6

7

8

9

1

0


1

2

3

4

5

6

7

8

9

2

0


1

2

3

4

5

6

7

8

9

3

0


1

vType

reserved1

reserved2

Offset (variable)

...

vType (2 bytes): A type indicator, indicating the type of vValue. It MUST be one of the values under the vType field, as specified in section 2.2.1.1.

reserved1 (2 bytes): Not used. Can be set to any arbitrary value when sent and it MUST be ignored on receipt.

reserved2 (4 bytes): Not used. Can be set to any arbitrary value when sent and it MUST be ignored on receipt.

Offset (variable): An offset to variable length data (for example, a string). This MUST be a 32-bit value (4 bytes long) if 32-bit offsets are being used (per the rules in section 2.2.3.12), or a 64-byte value (8 bytes long) if 64-bit offsets are being used.
        1. CSortSet


The CSortSet structure contains the sort order of the query.

0

1

2

3

4

5

6

7

8

9

1

0


1

2

3

4

5

6

7

8

9

2

0


1

2

3

4

5

6

7

8

9

3

0


1

count

sortArray (variable)

...

count (4 bytes): A 32-bit unsigned integer specifying the number of elements in sortArray.

sortArray (variable): An array of CSort structures describing the order in which to sort the results of the query. Structures in the array MUST be separated by 0 to 3 padding bytes such that each structure has a 4-byte alignment from the beginning of a message. Such padding bytes can be set to any arbitrary value when sent and MUST be ignored on receipt.
        1. CTableColumn


The CTableColumn structure contains a column of a CPMSetBindingsIn message.

0

1

2

3

4

5

6

7

8

9

1

0


1

2

3

4

5

6

7

8

9

2

0


1

2

3

4

5

6

7

8

9

3

0


1

PropSpec (variable)

...

vType

AggregateUsed

AggregateType

ValueUsed

_padding1 (optional)

ValueOffset (optional)

ValueSize (optional)

StatusUsed

_padding2 (optional)

StatusOffset (optional)

LengthUsed

_padding3 (optional)

LengthOffset (optional)

PropSpec (variable): A CFullPropSpec structure.

vType (4 bytes): A 32-bit unsigned integer that specifies the type of data value contained in the column. See the vType field in section 2.2.1.1 for the list of values for this field.

AggregateUsed (1 byte): MUST be set to one of the following values.

Value

Meaning

0x00

No aggregation is used, and the AggregateType field MUST NOT be present.

0x01

This column is used to aggregate the values for query results, as specified in AggregateType.

AggregateType (1 byte): This field MUST be set to one of the aggregation type values specified under the type field in section 2.2.1.25.

ValueUsed (1 byte): A 1-byte field that MUST be set to one of the following values.

Value

Meaning

0x00

The value of the column is not transferred in the row.

0x01

The value of the column is transferred within the row.

_padding1 (1 byte): A padding field.

Note  This field MUST be inserted before ValueOffset if, without it, ValueOffset would not begin at an even offset from the beginning of the message. The value of this byte is arbitrary and MUST be ignored. If ValueUsed is set to 0x00, this field MUST NOT be present.

ValueOffset (2 bytes): An unsigned 2-byte integer specifying the offset of the column value in the row. If ValueUsed is set to 0x00, this field MUST NOT be present.

ValueSize (2 bytes): An unsigned 2-byte integer specifying the size of the column value in bytes. If ValueUsed is set to 0x00, this field MUST NOT be present.

StatusUsed (1 byte): MUST be set to one of the following values.

Value

Meaning

0x00

The status of the column is not transferred within the row.

0x01

The status of the column is transferred within the row.

_padding2 (1 byte): A padding field.

Note  This field MUST be inserted before StatusOffset if, without it, the StatusOffset field would not begin at an even offset from the beginning of the message. The value of this byte is arbitrary and MUST be ignored. If StatusUsed is set to 0x00, this field MUST NOT be present.

StatusOffset (2 bytes): An unsigned 2-byte integer.

Note  Specifies the offset of the column status in the row. If StatusUsed is set to 0x00, this field MUST NOT be present.

LengthUsed (1 byte): A 1-byte field that MUST be set to one of the following values.

Value

Meaning

0x00

The length of the column MUST NOT be transferred within the row.

0x01

The length of the column is transferred within the row.

_padding3 (1 byte): A padding field.

Note  This field MUST be inserted before LengthOffset if, without it, LengthOffset would not begin at an even offset from the beginning of a message. The value of this byte is arbitrary and MUST be ignored. If LengthUsed is set to 0x00, this field MUST NOT be present.

LengthOffset (2 bytes): An unsigned 2-byte integer specifying the offset of the column length in the row. In CPMGetRowsOut, length is represented by a 32-bit unsigned integer by the offset specified in LengthOffset. If LengthUsed is set to 0x00, this field MUST NOT be present.
        1. SERIALIZEDPROPERTYVALUE


The SERIALIZEDPROPERTYVALUE structure contains a serialized value.

0

1

2

3

4

5

6

7

8

9

1

0


1

2

3

4

5

6

7

8

9

2

0


1

2

3

4

5

6

7

8

9

3

0


1

dwType

rgb (variable)

...

dwType (4 bytes): One of the variant types, as defined in section 2.2.1.1, that can be combined with variant type modifiers. For all variant types, except those combined with VT_ARRAY, SERIALIZEDPROPERTYVALUE has the same layout as CBaseStorageVariant. If the variant type is combined with the VT_ARRAY type modifier, SAFEARRAY2 is used instead of SAFEARRAY in the vValue field of CBaseStorageVariant.

rgb (variable): Serialized value. The serialization depends on the value of dwType, which is used identically to the vValue field in section 2.2.1.1. The process used to serialize rgb is the same as that described in section 2.2.1.1.
        1. CCompletionCategSpec


The CCompletionCategSpec structure contains the specification for building groups of search completion suggestions.

0

1

2

3

4

5

6

7

8

9

1

0


1

2

3

4

5

6

7

8

9

2

0


1

2

3

4

5

6

7

8

9

3

0


1

type

lcid

cComplStrings

apszComplStrings (variable)

...

cComplPids

aComplPids (variable)

...

type (4 bytes): A 32-bit unsigned integer. 0 for fuzzy matching, 1 for exact. A match is exact if it is a prefix of any of the strings specified by apszComplStrings. Fuzzy matching specifies that the server should return results that are similar to the primary query string for a server-defined definition of "similar".

lcid (4 bytes): A 32-bit unsigned integer, indicating the locale ID of the query strings.

cComplStrings (4 bytes): A 32-bit unsigned integer, indicating how many query strings will follow.

apszComplStrings (variable): An array of SERIALIZEDPROPERTYVALUE structures. Each structure represents a single query string. The first is the primary query string, and it is the structure that will be fuzzy-matched if the type value indicates fuzzy matching. The rest of the query strings are always matched by exact prefix. There will be a total of cComplStrings values.

cComplPids (4 bytes): A 32-bit unsigned integer, indicating how many PIDs will follow.

aComplPids (variable): An array of 32-bit unsigned integers. Each one is a PID representing a property that can be matched against for search completion values. If no PIDs are provided, all PIDs that are included in the index of completion strings are considered for matches. There will be cComplPids PIDs.


      1. Download 349,46 Kb.
1   ...   9   10   11   12   13   14   15   16   ...   28




Download 349,46 Kb.

Bosh sahifa
Aloqalar

    Bosh sahifa



[ms-wsp]: Windows Search Protocol Intellectual Property Rights Notice for Open Specifications Documentation

Download 349,46 Kb.