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

See also

CASE_REQUIREMENT