перечисление STRUCTURED_QUERY_RESOLVE_OPTION (structuredquery.h)
Параметры разрешения данных в дереве условий.
Синтаксис
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
} ;
Константы
SQRO_DEFAULT Значение: 0 Windows 7 и более поздних версий. Флаг по умолчанию. |
SQRO_DONT_RESOLVE_DATETIME Значение: 0x1 Если этот флаг не установлен, любое относительное выражение даты и времени в pConditionTree заменяется абсолютным диапазоном даты и времени, который был разрешен по отношению к ссылочной дате и времени, на которую указывает pstReferenceTime. Например, если запрос AQS содержал относительное выражение даты и времени "date:this month", а ссылочная дата и время были 19.09.2006 10:28:33, Разрешенное дерево условий будет содержать диапазон даты и времени, начиная с 01.09.2006 00:00:00 и заканчивая 10.01.2006 00:00:00 (в часовом поясе UTC). |
SQRO_ALWAYS_ONE_INTERVAL Значение: 0x2 Если этот флаг не установлен, разрешение относительного выражения даты и времени может привести к или с несколькими интервалами. Например, если запрос AQS содержал "date:Monday", а ссылочная дата и время были 19.09.2006 10:28:33 (вторник), то дерево разрешенных условий будет содержать или из трех 24-часовых диапазонов, соответствующих понедельникам 11.09.2006 г., 18.09.2006 и 25.09.2006, поскольку неясно, на какой понедельник был указан. Если этот флаг установлен, результатом всегда будет один диапазон даты и времени (в данном примере это будет диапазон даты и времени, начинающийся с 18.09.2006 00:00:00 и заканчивающийся 19.09.2006 00:00:00). |
SQRO_DONT_SIMPLIFY_CONDITION_TREES Значение: 0x4 Если этот флаг не установлен, результирующее дерево условий будет иметь любые возможные упрощения. |
SQRO_DONT_MAP_RELATIONS Значение: 0x8 Если этот флаг не имеет значение true, конечный узел с виртуальным свойством, сопоставленным с несколькими свойствами, будет заменен на ИЛИ конечных узлов, содержащих фактические свойства. Например, запрос AQS "to:Bill" может привести к созданию конечного узла, где свойство с именем System.StructuredQuery.Virtual.To фактически сопоставляется с двумя свойствами System.Message.ToAddress и System.Message.ToName , поэтому в дереве разрешенных условий будет иметься ИЛИ , который ищет значение "Bill" в этих двух свойствах. |
SQRO_DONT_RESOLVE_RANGES Значение: 0x10 Диапазон, полученный из выражения даты и времени, например "20..40", сначала разрешается в конечный узел, имеющий VT_UNKNOWN значение, где член punkVal реализует интерфейс IInterval . Если этот флаг не установлен, возвращенное дерево условий будет дополнительно разрешено в И простых сравнений, таких как COP_GREATERTHANOREQUAL и COP_LESSTHAN. Например, для запроса AQS "date:this month", разрешенного по отношению к 19.09.2006 10:28:33, Если этот флаг не задан, результирующее дерево условий — это И system.ItemDate COP_GREATERTHANOREQUAL 01.09.2006 00:00:00 и System.ItemDate COP_LESSTHAN 10.1.2006 00:00:00. Если этот флаг установлен, результирующее дерево условий будет соотносить System.ItemDate с IInterval таким образом, что его метод IInterval::GetLimits возвращает ILK_EXPLICIT_INCLUDED, 01.09.2006 00:00:00, ILK_EXPLICIT_EXCLUDED и 10.01.2006 00:00:00. |
SQRO_DONT_REMOVE_UNRESTRICTED_KEYWORDS Значение: 0x20 Неограниченное ключевое слово — это ключевое слово, не связанный со значением, которое завершает условие. Например, в следующем запросе AQS свойство, обозначенное как "From", считается неограниченным ключевое слово: "Kind:email Subject:"My Resume" From:". Если этот флаг установлен, такое свойство будет присутствовать в результирующем дереве условий в виде конечного узла, имеющего операцию COP_IMPLICIT , пустое строковое значение и семантический тип System.StructuredQueryType.Value. В противном случае он будет полностью удален. |
SQRO_DONT_SPLIT_WORDS Значение: 0x40 Если этот флаг установлен, группа слов, не разделенных пробелами, будет храниться вместе в одном конечном узле. Если этот флаг не установлен, группа будет разбита на отдельные конечные узлы. Приложению может потребоваться установить этот флаг при разрешении дерева условий, если результирующее дерево будет дополнительно обработано кодом, который должен выполнять дополнительные разбиения по словам. |
SQRO_IGNORE_PHRASE_ORDER Значение: 0x80 Если фраза в запросе AQS заключена в двойные кавычки, слова в этой фразе попадают в один конечный узел (независимо от того, задано ли SQRO_DONT_SPLIT_WORDS ), если этот флаг не установлен. В этом случае они попадают в отдельные конечные узлы и их порядок больше не имеет значения. Приложение может установить этот флаг, если оно не может правильно обрабатывать конечные узлы с несколькими словами. |
SQRO_ADD_VALUE_TYPE_FOR_PLAIN_VALUES Значение: 0x100 |
SQRO_ADD_ROBUST_ITEM_NAME Значение: 0x200 Обход известных проблем в средствах разбиения по словам, добавляя условия для PKEY_ItemNameDisplay при необходимости. |
Комментарии
Тип STRUCTURED_QUERY_RESOLVE_OPTION определен в StructuredQuery.h, как показано ниже.
typedef int STRUCTURED_QUERY_RESOLVE_OPTION;
Требования
Минимальная версия клиента | Windows XP с пакетом обновления 2 (SP2), Windows Vista, Windows 7 [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Верхняя часть | structuredquery.h |
Распространяемые компоненты | Windows Desktop Search (WDS) 3.0 |