Поделиться через


Предложение WHERE (Windows Search)

Условия, определяющие, включен ли документ в результаты, возвращаемые запросом, задаются предложением WHERE. На самом высоком уровне синтаксис предложения WHERE содержит две части:

...WHERE [<group_aliases>] <search_condition>
...WHERE ReuseWhere(<WHEREID>)

Необязательный <group_alias> части предложения упрощает сложные запросы, присваивая псевдоним группе из одного или нескольких столбцов. Это может повысить удобочитаемость сложных запросов, которые ищут одни и те же сведения в нескольких столбцах, указанных URL-адресами. Дополнительные сведения о псевдонимах групп см. в разделе WITH - As Group Alias Predicate.

Часть <условия> поиска предложения WHERE — это один или несколько предикатов поиска, которые указывают критерии соответствия для поиска. Предикаты поиска — это выражения, которые подтверждают некоторые факты о некотором значении.

Результатом условия поиска является логическое значение: TRUE , если документ соответствует указанным условиям поиска, или FALSE , если это не так. Если результат имеет значение TRUE, возвращается документ. Если результат имеет значение FALSE, документ не возвращается. Документам, возвращаемым в запросе Microsoft Windows Search, присваиваются ранговые значения в соответствии с тем, насколько хорошо они соответствуют условиям поиска. Каждое из условий поиска запроса может включать предложение RANKBY , которое поддерживает изменение возвращаемых значений ранжирования.

Функция ReuseWhere повышает эффективность нескольких запросов, использующих одни и те же условия поиска. Предложение WHERE в запросе указывает набор элементов, которые соответствуют в запросе. Последующие запросы могут совместно использовать работу, выполненную для предыдущей оценки, с помощью функции ReuseWhere в новом предложении WHERE запроса.

Предикаты поиска

Условие поиска состоит из одного или нескольких предикатов или условий поиска, описывающих, что ищет пользователь (например, WHERE System.DateCreated >'2006-04-19'). Предикаты поиска можно объединить с помощью логических операторов AND, OR или NOT. Необязательный унарный оператор NOT можно использовать только с И и только для отмены логического значения предиката или условия поиска. Круглые скобки можно использовать для группировки и вложения логических терминов.

В следующей таблице показан порядок приоритета для логических операторов.

Порядок (приоритет) Логический оператор
Первый (самый высокий) NOT
Второе AND
Третий (самый низкий) OR

 

Логические операторы одного типа являются ассоциативными и не задан порядок вычислений. Например, (A AND B) AND (C AND D) можно вычислить (A AND D) AND (B AND C) без изменения логического результата.

Важно!

Неправильно: WHERE NOT CONTAINS ('computer')

Правильно: WHERE CONTAINS ("программное обеспечение") И NOT CONTAINS ("компьютер")

 

В сложных запросах может потребоваться сделать больше внимания на совпадениях в некоторых столбцах, чем в других. Например, при поиске документов, в которых обсуждается "разработка программного обеспечения", поиск условия поиска в заголовке документа, скорее всего, будет хорошим совпадением, чем поиск отдельных слов в тексте документа. Чтобы таким образом повлиять на ранжирование документов, язык запросов Microsoft Windows Search поддерживает взвешивание условий поиска. Дополнительные сведения о весе столбцов см. в разделах CONTAINS Predicate и FREETEXT Predicate.

Существует три группы предикатов поиска в Windows Search: полнотекстовый, не полнотекстовый поиск и поиск по глубине папки. Предикаты полнотекстового поиска обычно соответствуют значению содержимого, заголовка и других столбцов и поддерживают лингвистическое сопоставление (например, альтернативные словоформы, фразы и поиск близкого расположения). В отличие от этого, предикаты не полнотекстового поиска соответствуют значению указанных столбцов и не включают в себя специальную лингвистическую обработку, но в некоторых случаях предлагают сопоставление шаблонов на основе символов. Предикаты глубины папки ограничивают область поиска указанным путем.

Примечание

Если запрос возвращает документ, так как не полнотекстовый предикат для этого документа имеет значение TRUE , то значение ранга вычисляется как 1000. Использование функции приведения ранга может изменить значение ранжирования.

 

В следующих таблицах описаны предикаты полнотекстового, не полнотекстового поиска и поиска по глубине папки.

Полнотекстовый предикат Description
CONTAINS Поддерживает сложный поиск терминов в текстовых столбцах документа (например, заголовок, содержимое). Может выполнять поиск по форме условий поиска, проверять их близость и выполнять логические сравнения. Условия поиска могут содержать подстановочные знаки.
FREETEXT Выполняет поиск документов, которые соответствуют значению поисковой фразы. Связанные слова и похожие фразы будут совпадать, а столбец ранжирования вычисляется на основе того, насколько точно документ соответствует поисковой фразе. Условия поиска не могут содержать подстановочные знаки.

 

Не полнотекстовый предикат Описание
LIKE Значения столбцов сравниваются с помощью простого сопоставления шаблонов с подстановочными знаками.
Сравнение литеральных значений Значения столбцов сравниваются со строковыми значениями, датой, меткой времени, числовыми значениями и другими литеральными значениями. Этот предикат поддерживает равенство и неравенство, такие как "больше" и "меньше чем".
Сравнения с несколькими значениями (ARRAY) Многозначные столбцы сравниваются с многозначным массивом литерал.
NULL Значения столбцов, которые не определены для документа, можно определить с помощью предиката NULL .

 

Глубина папки Описание
SCOPE Выполняет глубокий обход указанного пути, включая определенную папку и все вложенные папки.
КАТАЛОГ Выполняет мелкий обход указанного пути, выполняя поиск только в определенной папке.

 

Примеры

Примеры предложения WHERE см. в разделах с отдельными предикатами, связанными в предыдущей таблице.

Reference

Функция ReuseWhere

Свойства набора строк

Предложение FROM

Общие сведения о синтаксисе SQL для поиска

WITH - Предикат псевдонима группы AS

Предикаты SCOPE и DIRECTORY

Предложение RANK BY

Основные понятия

Полнотекстовые предикаты

Не полнотекстовые предикаты