|
|
|||||||||||||||||||||||||||||
|
Использование объектов Microsoft Index ServerИсточник: Relib
Знаете ли вы, что для того чтобы создать поисковую систему на сайте вы можете использовать Microsoft Index Server, который входит в Microsoft IIS? Благодаря этому программному пакету вы сможете быстро и легко создать собственный поиск по сайту. Не верите? Тогда, посмотрим вместе. Создадим на странице форму поиска, где ваш посетитель сможет вводить запрос и которая будет обращаться к БД Index Server. Создание формы для поиска Форма для поиска представляет собой обычную HTML-форму с несколькими скрытыми ("hidden") полями, которые отвечают за специфику запроса к поисковой системе. <form method="get" action="/sitesearch/sitesearch.asp" id=form1 name=form1> <!-- search text --> <table width="100%"> <tr width="100%" bgcolor="Black"> <td width="100%"> <font color="White"> <b>Search</b> </font> </td> </tr> </table> <input type="text" name="qu" size="20"><br> <!-- max hits --> <input type="hidden" name="mh" value=50> <!-- sort by hits --> <input type="hidden" name="sd" value="Hitcount"> <!-- allow enumeration --> <input type="hidden" name="ae" value="1"> <!-- catalog --> <input type="hidden" name="ct" value="c:\inetpub\www07120\index\"> <input type="submit" value="Фас!" name="Search"> <a href="/sitesearch/searchhelp.asp"><font size=-1>Help</a></font> </form> При просмотре готовой страницы в браузере вы увидите текстовое поле для ввода запроса и кнопку "Фас!". Скрытые поля означают следущее:
Для отображения результата будем вызывать другую страницу, которая будет получать запрос из поисковой формы и передавать его серверу, причем, обратите внимание, что используется тип GET. Создание cтраницы для отображения результатов поиска Теперь очередь за cтраницей результатов, которая будет получать значения из формы, чтобы передать их Index Server. Общий схема ее работы будет следующей: <% 'Создаем объект Query и инициализируем его 'используя SetQueryFromURL Set objQuery = Server.CreateObject("ixsso.Query") 'Получить свойства query из входящей 'URL (используя тип формы GET) objQuery.SetQueryFromURL(Request.QueryString) 'Зададим требуемые поля objquery.columns="filename,HitCount,vpath,DocTitle,characterization" 'Откроем recordset set rsQuery = objquery.createrecordset("nonsequential") 'И пока свойство rsquery.eof не равно TRUE выводим 'результаты. Значение TRUE будет означать конец recordset %> <html> <head> </head> <h1>Результаты поиска</h1> <br><br> <% if not rsquery.eof then Response.Write "Найдено " _ & rsquery.recordcount & " документов." if rsquery.recordcount > 30 then Response.Write "Попробуйте более" _ & "точно сформулировать запрос." end if Response.Write "<br>" end if %> <% if not rsquery.eof then while not rsquery.eof and rowcount > 0 if rsquery("doctitle") <> "" then Response.Write "<p><b><a href='" _ & rsquery("vpath") & "'>" _ & rsquery("doctitle") & "</a></b><br>" response.write "<font size=-1>" _ & rsquery("characterization") _ & "...</font><Br>" Response.Write "<font size=-2>" _ & rsquery("hitcount") & "</font></p>" end if rowcount = rowcount - 1 rsquery.movenext wend Response.Write "<br><Br>" %> <% else %> <p> Документы не найдены. Попробуйте сформулировать ваш запрос по-другому. </p> <% end if %> </body> </html> Первая вещь, которую требуется сделать - это установить ссылку на объект Index Server, путем использования метода server.creatobject: Set objQuery = Server.CreateObject("ixsso.Query") Теперь объект objQuery установлен и готов для настройки. Зададим запрос, который требуется выполнить в БД. Он может быть получен из входящей информации URL используя: objQuery.SetQueryFromURL(Request.QueryString) Затем, укажем названия полей, которые требуется возвращать на странице результатов поиска. objquery.columns="filename,HitCount,vpath,DocTitle,characterization" В нашем примере это: имя файла документа filename; число повторений слова HitCount, которое встречается в документе; заголовок документа (в HTML-тэге Title) DocTitle; информация о файле characterization. Этот набор данных позволит дать пользователю краткую, но, в то же время, довольно емкую информацию о найденных документах. Если вы используете мета-тэг Description для задания описания документа, то его содержание будет включено в characterization. Если нет, тогда characterization будет возвращать начало документа. Так как Index Server игнорирует код ASP-скрипта, то в последнем случае вы получите "реальное" содержание. И, наконец, можно сделать запрос к БД - просто создаем recordset, также как в любом другом случае работы с ADO. set rsQuery = objquery.createrecordset ("nonsequential") С возвращаемым набором записей rsQuery можно использовать MoveNext, MovePrev и др. методы ADO. Чтобы получить значение поля используйте созданный объект rsQuery: rsquery("doctitle") Чтобы получить количество записей, возвращенных запросом, используйте свойство Rsquery.RecordCount. Таким образом, мы сделали элементарный пример работы ASP-приложения с Index Server. Попробуйте его, это действительно просто! Создав собственную поисковую систему вы придатите вашему сайту более профессиональный вид и предотвратите преждевременный уход пользователей с сайта, так как у них теперь появится возможность быстро найти все ваши документы.
|
|