STRUCTURED_QUERY_RESOLVE_OPTION enumeration (structuredquery.h)
Options for resolving data into a condition tree.
Syntax
typedef enum STRUCTURED_QUERY_RESOLVE_OPTION {
SQRO_DEFAULT = 0,
SQRO_DONT_RESOLVE_DATETIME = 0x1,
SQRO_ALWAYS_ONE_INTERVAL = 0x2,
SQRO_DONT_SIMPLIFY_CONDITION_TREES = 0x4,
SQRO_DONT_MAP_RELATIONS = 0x8,
SQRO_DONT_RESOLVE_RANGES = 0x10,
SQRO_DONT_REMOVE_UNRESTRICTED_KEYWORDS = 0x20,
SQRO_DONT_SPLIT_WORDS = 0x40,
SQRO_IGNORE_PHRASE_ORDER = 0x80,
SQRO_ADD_VALUE_TYPE_FOR_PLAIN_VALUES = 0x100,
SQRO_ADD_ROBUST_ITEM_NAME = 0x200
} ;
Constants
SQRO_DEFAULT Value: 0 Windows 7 and later. The default flag. |
SQRO_DONT_RESOLVE_DATETIME Value: 0x1 Unless this flag is set, any relative date/time expression in pConditionTree is replaced with an absolute date/time range that has been resolved against the reference date/time pointed to by pstReferenceTime. For example, if an AQS query contained the relative date/time expression "date:this month" and the reference date/time was 9/19/2006 10:28:33, the resolved condition tree would contain a date/time range beginning at 9/1/2006 00:00:00 and ending at 10/1/2006 00:00:00 (in the UTC time zone). |
SQRO_ALWAYS_ONE_INTERVAL Value: 0x2 Unless this flag is set, resolving a relative date/time expression may result in an OR of several intervals. For example, if an AQS query contained "date:Monday" and the reference date/time was 9/19/2006 10:28:33 (a Tuesday), the resolved condition tree would contain an OR of three 24 hour ranges corresponding to the Mondays of 9/11/2006, 9/18/2006 and 9/25/2006, because it is not clear which Monday was referenced. If this flag is set, the result will always be a single date/time range (for this example, it would be a date/time range beginning at 9/18/2006 00:00:00 and ending at 9/19/2006 00:00:00). |
SQRO_DONT_SIMPLIFY_CONDITION_TREES Value: 0x4 Unless this flag is set, the resulting condition tree will have any possible simplifications applied to it. |
SQRO_DONT_MAP_RELATIONS Value: 0x8 Unless this flag is true, a leaf node with a virtual property that maps to several properties will be replaced by an OR of leaf nodes containing the actual properties. For example, the AQS query "to:Bill" may result in a leaf node where the property named System.StructuredQuery.Virtual.To actually maps to the two properties System.Message.ToAddress and System.Message.ToName , so the resolved condition tree would have an OR that looks for "Bill" in those two properties. |
SQRO_DONT_RESOLVE_RANGES Value: 0x10 A range resulting from a date/time expression, an expression such as "20..40", is first resolved to a leaf node that has a VT_UNKNOWN value where the punkVal member implements the IInterval interface. Unless this flag is set, the returned condition tree will have been further resolved to an AND of simple comparisons such as COP_GREATERTHANOREQUAL and COP_LESSTHAN. For example, for an AQS query "date:this month" resolved against 9/19/2006 10:28:33, if this flag is not set, the resulting condition tree is an AND of System.ItemDate COP_GREATERTHANOREQUAL 9/1/2006 00:00:00 and System.ItemDate COP_LESSTHAN 10/1/2006 00:00:00. If this flag is set, the resulting condition tree will relate System.ItemDate to an IInterval such that its IInterval::GetLimits method returns ILK_EXPLICIT_INCLUDED, 9/1/2006 00:00:00, ILK_EXPLICIT_EXCLUDED and 10/1/2006 00:00:00. |
SQRO_DONT_REMOVE_UNRESTRICTED_KEYWORDS Value: 0x20 An unrestricted keyword is a keyword that is not associated with a value that completes the condition. For example, in the following AQS query, the property denoted by "From" is considered an unrestricted keyword: "Kind:email Subject:"My Resume" From:". If this flag is set, such a property will be present in the resulting condition tree as a leaf node having a COP_IMPLICIT operation, an empty string value, and a semantic type of System.StructuredQueryType.Value. Otherwise, it will be removed entirely. |
SQRO_DONT_SPLIT_WORDS Value: 0x40 If this flag is set, a group of words not separated by white space will be kept together in a single leaf node. If this flag is not set, the group will be broken up into separate leaf nodes. An application may want to set this flag when resolving a condition tree if the resulting tree will be further processed by code that should do any additional word breaking. |
SQRO_IGNORE_PHRASE_ORDER Value: 0x80 If a phrase in an AQS query is enclosed in double quotes, the words in that phrase go into a single leaf node (regardless of whether SQRO_DONT_SPLIT_WORDS is set) unless this flag is set, in which case they end up in separate leaf nodes and their order no longer matters. An application can set this flag if it is not able to handle leaf nodes with multiple words correctly. |
SQRO_ADD_VALUE_TYPE_FOR_PLAIN_VALUES Value: 0x100 |
SQRO_ADD_ROBUST_ITEM_NAME Value: 0x200 Work around known issues in word breakers, adding conditions on PKEY_ItemNameDisplay as needed. |
Remarks
The STRUCTURED_QUERY_RESOLVE_OPTION type is defined in StructuredQuery.h as shown here.
typedef int STRUCTURED_QUERY_RESOLVE_OPTION;
Requirements
Requirement | Value |
---|---|
Minimum supported client | Windows XP with SP2, Windows Vista, Windows 7 [desktop apps only] |
Minimum supported server | Windows Server 2003 [desktop apps only] |
Header | structuredquery.h |
Redistributable | Windows Desktop Search (WDS) 3.0 |