Синтаксис поиска Windows Vista: предикативы
В предыдущем посте я привел короткий обзор синтаксиса запросов OLE DB Provider для Windows Search в Windows Vista. Сейчас я расскажу более подробно о предикативах, которые могут быть использованы с оператором WHERE...
Небольшое замечание: целью данной статьи является обзор возможностей данного инструмента, она не претендует на полное описание команд.
Простые предикативы
Простыми являются предикативы LIKE, буквенные сравнения и NULL (пустое множество) - сравнение.
Вот несколько примеров для выражения WHERE, использующие простые предикативы:
WHERE "System.DisplayName" LIKE 'a%'
Возвращает все элементы, начинающиеся с символа 'a'
WHERE "System.DateModified" >= '2006-06-01'
Возвращает все элементы, измененные после 1-го июня 2006 года
WHERE "System.ApplicationName" IS NOT NULL
Возвращает все элементы, содержащие какое-либо значение в System.ApplicationName
Полнотекстовые предикативы
Полнотекстовые предикативы, CONTAINS и FREETEXT, позволяют Вам искать по содержимому или/и свойствам элементов. Они имеют схожий синтаксис:
CONTAINS | FREETEXT ('<searchString>') - производит поиск по содержимому элементов
CONTAINS | FREETEXT (<column>, '<searchString>') - производит поиск по соответствующему свойству элемента
CONTAINS | FREETEXT (* , '<searchString>') - производит поиск по всем свойствам документа
Вот несколько примеров, демонстрирующие возможности предикатива CONTAINS:
CONTAINS(*, 'Catherine')
Возвращает все элементы, содержащие 'Catherine' в содержимом или в какой-либо строчке свойств.
CONTAINS("System.Author", 'Catherine')
Ограничивает поиск(см. пример выше) по какому-либо свойству, в нашем случае - System.Author
CONTAINS('Catherine')
Производит поиск только по содержимому элемента.
Заметьте следующее:
· Параметры предикатива должны находиться в круглых скобках.
· Строка поиска должна быть в одинарных кавычках.
· Как видно из примера с оператором SELECT, названия столбцов должны быть в двойных кавычках.
· Поисковые запросы нечувствительны к регистру.
Касательно синтаксиса <searchString>: если вы хотите искать по какому-то предложению, то его необходимо заключить в двойные кавычки. Вот еще несколько примеров:
CONTAINS(' "This is a phrase" ')
Заметьте, искомая фраза находится внутри двойных кавычек, а весь поисковый запрос - внутри одинарных кавычек..
CONTAINS(' "Using a wildcard*" ')
Использует символ "*" как групповой в строке поиска.
CONTAINS(' "Using" AND "Boolean" OR "operators" ')
Возвращает элементы, содержащие строки 'using' и (and) 'boolean' или (or) 'operators'.
CONTAINS(' "This" NEAR "that" ')
Возвращает элементы, в которых строка 'this' находится в примерно 50 сло от строки 'that'.
Используйте FREETEXT, если Вам необходим релевантный запрос - это единственный предикатив, возвращающий различное значение ранга (все другие возвращают 0 или 1000, в зависимости от результата). ПРИМЕЧАНИЕ: чтобы получить значение ранга, добавьте в запрос строку System.Search.Rank.
Предикативы глубины поиска
Предикативы SCOPE и DIRECTORY позволяют Вам управлять глубиной поиска.
Предикатив SCOPE производит поиск в необходимой папке и во всех подпапках (иногда упоминается как "прослеживание в глубину")
Предикатив DIRECTORY производит поиск только в указанной папке ("неглубокое прослеживание")
Синтаксис таков:
"SCOPE | DIRECTORY" = '(file | mapi | csc):<path>'
Вот пример использования предикатива SCOPE, в котором он ограничивает поиск папкой C:\Foo\Example:
"SCOPE"='file:C:/Foo/Example'
Для поиска в корневом каталоге, используйте следующий запрос:
"DIRECTORY"='file:C:/Foo/Example'
Синтаксис может показаться избыточным, но заметьте следующие особенности:
- "SCOPE"=
- Предикатив заключается в двойные кавычки (он нечувствителен к регистру), далее следует знак равенства.
- 'file:C:/Foo/Example'
- Строка адреса находится в одинарных кавычках.
- Строка адреса начинается с указания протокола (в нашем случае - file), за которым следует двоеточие (вместо знака //, как например в URL).
- В адресной строке символы обратного слеша.
Пара примечаний в заключение
Служба поиска в Windows Vista и инфраструктура индексирования имеют общие корни в с технологиями индексирования в SharePoint Portal Server. Для последнего существует SharePoint Portal Server Search SQL Syntax (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/spptsdk/html/SPSSQLSyntaxOverview_SV01150569.asp?frame=true). Этот документ может быть полезен при изучении отдельных особенностей синтаксиса. Просто представьте, что его можно применить к Windows Vista.
Относительно системы свойств Windows Vista - есть несколько текущих изменений в названиях свойств для ясности, так что, Вам будет необходимо изменять некоторые строки запросов в последующих билдах Windows Vista.
Источник:http://blogs.msdn.com/
Перевод: RLV
По теме
- Windows Vista официально "мертва"
- Завтра прекращается поддержка Windows Vista
- Остался последний месяц поддержки Windows Vista
- 11 апреля Microsoft прекратит поддержку Windows Vista
- Через год прекращается поддержка Windows Vista
- Microsoft открыла исходный код Open XML SDK
- Баллмер: Longhorn/Vista - моя самая серьезная ошибка
- Сегодня заканчивается бесплатная фаза поддержки Windows Vista и Office 2007
- Microsoft продлила срок поддержки Windows Vista и Windows 7
- Практики обеспечения безопасности Microsoft - лучшие в мире