Занятие 3. Запросы
(Продолжительность занятия 55 минут)
Запросы — это способ, которым пользователи Интернета и интрасети выполняют поиск интересующего их фрагмента текста или свойства документов Вашего сервера. На этом занятии Вы познакомитесь с запросами и их обслуживанием.
Изучив материал этого занятия, Вы сможете:
Формы запросов позволяют пользователям Вашего Web-узла искать документы, отвечающие заданным критериям. Index Server позволяет снабдить форму запроса дополнительными средствами, упрощающими его обработку и улучшающими отображение результатов, а также контролирующими использование запроса.
В состав Index Server включен образцы форм запросов. Вы вправе использовать его для поиска в индексированных файлах. Эти формы можно сделать доступными посетителям Web-узлов и воспользоваться ими при разработке собственных форм. Чтобы открыть образец формы запроса, в меню Start выберите команды Programs, Windows NT 4.0 Option Pack, Microsoft Index Server, Index Server Sample Query Form.
Элементы формы запроса
Простейшая форма запроса состоит из следующих элементов.
Примечание Index Server использует еще один файл, с расширением .htw — шаблон для форматирования страницы с выделением вхождений искомого текста. Содержимое HTW- и НТХ-файлов форматируется в виде Web-страницы и передается Web-обозревателю.
Кроме того, для создания форм запросов можно применять активные страницы сервера (ASP) и язык структурированных запросов (SQL). Поддержку SQL обеспечивают активные объекты данных (Microsoft Active Data Objects, ADO).
Создавая формы запросов средствами ASP, Вы вправе использовать сценарные возможности ActiveX. Запросы с применением asp-файлов позволяют воспользоваться преимуществами сценарных языков Microsoft VBScript и JScript для достижения большей гибкости в отображении результатов запроса. Активные страницы сервера подробно описаны в главе 11, «Активные страницы сервера».
Вместо стандартных форм Index Server допустимо создание SQL-запросов в приложениях, использующих ADO. Таким образом, ASP-файл может применять расширения SQL для формирования запроса, ADO для выбора данных и сценарный язык (например, VBScript) для их отображения.
Примечание Если производительность сервера Index Server недостаточна, ограничьтесь базовыми формами (.idq-, .htx- и .htm-файлы). Запросы с применением ASP и SQL требуют больших вычислительных мощностей, чем базовые формы.
Процесс запроса
В отличие от индексирования, выполняющегося в фоновом режиме, процесс запроса инициируется пользователем и взаимодействует с Internet Information Server для передачи запроса, его обработки и возврата результатов клиенту.
Как показано на рисунке, Index Server начинает работу с преобразования поступившего запроса из формы во внутреннее представление, совместимое с индексами Index Server. Затем Index Server выполняет запрос и возвращает результаты пользователю в формате HTML.
Index Server использует IDQ-файлы для преобразования запроса из Web-формы во внутреннее представление, а НТХ-файлы — для форматирования результатов выполнения запроса.
Наборы результатов
Index Server помещает ссылки на документы, удовлетворяющие условиям запроса, в набор результатов, который возвращается клиенту.
В форме запроса можно ограничить максимальное число документов, отвечающих условиям отбора, размещаемых на одной странице результатов. Например, Вы вольны так организовать набор результатов, состоящий из 200 элементов, чтобы клиент получил информацию на 10 страницах, каждая из которых содержит по 20 найденных соответствий. Кроме того, в форму можно включить элемент, позволяющий клиенту ограничить число возвращаемых документов. Index Server способен расположить элементы набора результатов в порядке, определяемом любым свойством документа.
Если для обеспечения безопасности Internet Information Server применяются списки контроля доступа (Access Control Lists, ACL), а индексируемая совокупность документов хранится на томе NTFS, Index Server учтет эти ограничения, проверяя списки контроля доступа. Пользователь не получит в наборе результатов ссылку на документ, если у него нет права чтения этого документа.
Если список контроля доступа разрешает доступ к документу, клиент может указать, информацию о каких свойствах сервер должен вернуть в наборе результатов (эта информация определяет столбцы набора результатов).
Кроме информации о свойствах документов, Index Server способен возвращать аннотации к документам, причем аннотации могут значительно сузить область поиска.
Построение запросов и результатов
Файлы запроса данных по Интернету (файлы с расширением .idq) служат для преобразования запросов. Обладающие большими возможностями НТХ-файлы в сочетании с IDQ-файлами форматируют результаты запроса. Как показано на приведенном ниже рисунке, НТХ-файлы могут содержать расширения, позволяющие воспользоваться .уникальными особенностями запросов Index Server.
К папке, где хранятся IDQ-файл и соответствующий ему НТХ-файл, должен быть разрешен доступ для выполнения. Объявление параметров с помощью IDQ-файлов IDQ-файл преобразует параметры HTML-формы в запрос, который выполняет Index Server.
Примечание Все пути к IDQ-файлам должны быть полными, а не относительными или физическими путями от виртуального сервера. Другими словами, все пути должны начинаться с символа косой черты «/» и не могут включать символы «.» или «..». Допустимые и недопустимые варианты приведены ниже.
Допустимый вариант
/scripts/myquery.idq
/scripts/samples/search/query.idq
Недопустимый вариант
c:\inetsrv\scripts\myquery.idq
scripts/query.idq
/samples/../scripts/query.idq
IDQ-файлы нельзя хранить на виртуальном сервере, заданном UNC-именем.
IDQ-файл состоит из двух разделов: имен и запроса.
Раздел имен
Всю работу выполняет раздел запроса, однако раздел имен позволяет задать нестандартные имена столбцов, к которым можно обращаться в запросе. Эти столбцы соответствуют свойствам ActiveX, определенным в файлах документов с помощью интерфейса IPropertyStorage или механизма пользовательских и итоговых свойств Microsoft Office. Раздел имен — мощный инструмент, позволяющий настроить поиск для конкретных нужд Вашей организации. Присутствие раздела имен в IDQ-файле не обязательно; в стандартных запросах он просто не нужен.
Раздел запроса
В разделе запроса задаются его фактические параметры. В этом качестве могут выступать такие свойства, как область запроса, ограничения на содержимое, наборы результатов либо переменные форм, включая условные выражения, изменяющие значения переменной в зависимости от какого-либо условия. Раздел запроса начинается с тэга [Query], за которым следует набор параметров. Ниже приведен пример простого, но вполне типичного IDQ-файла.
[Query]
CiColumns=filename,size, rank,characterization,vpath,DocTitle,write
CiFlags=DEEP
CiRestriction=%CiRestriction%
CiMaxRecordsInResultSe-t=150
CiMaxRecordsPerPage=10
CiScope=\
CiTemplate=/scripts/spdc1. htx CiSort=rank[d] CiCatalog=d:\
Смысл строк этого файла поясняется в приведенной ниже таблице.
Строка запроса |
|
[Query] |
|
CiColumns= filename, size, rank, characterization, vpath, DocTitle, write |
|
CiFlags=DEEP |
|
CiRestriction=%CiRestriction% |
|
CiMaxRecordsInResultSet= 150 |
|
CiMaxRecordsPerPage= 10 |
|
CiScope=\ |
|
CiTemplate=/scripts/spdc 1 .htx |
|
CiSort=rank[d] |
|
CiCatalog=d:\ |
|
Оформление результатов запроса средствами НТХ-файлов
НТХ-файл — это HTML-файл, переменные которого ссылаются на данные результата запроса. Например, приведенный ниже код НТХ-файла определяет заголовок страницы, который отображает заданные в запросе условия поиска и диапазон документов на текущей странице. После примера кода показан форматированный HTML-текст, получившийся в результате его работы.
<%if CiMatchedRecordCount eq 0%>
<Н4>Нет документов, удовлетворяющих критерию поиска "<%CiRestrictionHTML%>".</
Н4>
<%else%>
<Н4>Документы с <%CiFirstRecordNumber%> no <%CiLastRecordNumber%> из
<%if CiMatchedRecordCount eq CiMaxRecordsInResultSet%>
первых
<%endif%>
<%CiMatchedRecordCount%>, удовлетворяющих критерию поиска
"<%CiRestrictionHTML%>".</H4>
<%endif%>
Результат работы этого кода:
Документы с 1 по 10 из первых 150, удовлетворяющих критерию поиска "systems management".
Здесь переменная <%CiFirstRecordNumber%> имеет значение 1, а <%CiMatchedRecordCount%> — 150.
НТХ-файл — это стандартный HTML-файл, использующий расширения Internet Information Server и Index Server для работы с именами переменных и другой информацией. Index Server использует НТХ-файл в качестве шаблона для форматирования результатов обработки запроса.
Упражнение
В этом упражнении Вы выполните поиск по примеру индекса. Образцы страниц запросов Index Server дают достаточно полное представление о его средствах работы с запросами. Для успешного выполнения упражнений этой главы должен быть запущен процесс Index Server (Cidaemon.exe).
> Проверка работы процесса Index Server
> Запуск процесса создания индекса
Примечание Если на экране появится сообщение системы защиты, щелкните кнопку Yes.
На странице результатов будет перечислено около 100 найденных документов. 4. Закройте Internet Explorer.
Теперь Вы поупражняетесь в администрировании Index Server, проверив текущее состояние индексирования с помощью утилиты Performance Monitor и Internet Explorer.
> Проверка состояния индексирования средствами Performance Monitor
Сейчас Вы скопируете файлы в виртуальный корень Web-узла, а затем выполните операцию слияния, чтобы отфильтровать и проиндексировать новые документы. Этот процесс увеличит значения нескольких счетчиков.
> Обновление индекса средствами Index Server Manager
Примечание Так как Вы скопировали файлы в виртуальный корень Web- узла, для фильтрования и индексирования новых документов необходимо выполнить операцию слияния.
> Проверка состояния индекса средствами Internet Explorer
Примечание. Результаты этого упражнении зависят от того, на какой стадии индексирования находится Ваша совокупность документов.
> Выполнение расширенных запросов
Примечание Если на экране появится сообщение системы защиты, в ответ щелкните кнопку Yes.
Резюме
Процесс запроса инициируется пользователем и взаимодействует с Internet Information Server для передачи ему запроса, его обработки и возврата результатов клиенту. Index Server использует IDQ-файлы для преобразования запроса из Web- формы во внутреннее представление, а НТХ-файлы — для форматирования результатов обработки запроса. Вы также можете создавать формы запросов средствами ASP. Использование сценарных языков позволяет достичь большей гибкости в отображении результатов запроса.