Опрос
Вы участвуете в программе Windows Insider?
Популярные новости
Обсуждаемые новости

Синтаксис поиска Windows Vista: предикативы

Напечатать страницу
06.08.2006 00:27 | Raiker

В предыдущем посте я привел короткий обзор синтаксиса запросов 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

Комментарии

Комментариев нет...
Для возможности комментировать войдите в 1 клик через

По теме

Акции MSFT
420.55 0.00
Акции торгуются с 17:30 до 00:00 по Москве
Все права принадлежат © ms insider @thevista.ru, 2022
Сайт является источником уникальной информации о семействе операционных систем Windows и других продуктах Microsoft. Перепечатка материалов возможна только с разрешения редакции.
Работает на WMS 2.34 (Страница создана за 0.084 секунд (Общее время SQL: 0.066 секунд - SQL запросов: 53 - Среднее время SQL: 0.00125 секунд))
Top.Mail.Ru