(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Использование объектов 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>

При просмотре готовой страницы в браузере вы увидите текстовое поле для ввода запроса и кнопку "Фас!". Скрытые поля означают следущее:

  • mh - максимальное число документов (hits), которое может вернуть поисковая система. Например, вы можете установить это значение в 200. Задание слишком большого значения может излишне загрузить ваш веб-сервер, однако слишком маленькое - также может вернуть недостаточное количество результатов, поэтому здесь вам потребуется определить наиболее оптимальное число для вашего сайта.
  • sd - имя поля, по которому требуется производить сортировку. В нашем примере мы используем поле hitcount, которое содержит количество повторений слова в документе, т.е. отсортируем результаты поиска по релевантности в порядке убывания - descending (отсюда и "d" в названии поля).
  • ct указывает, где найти каталог или индексную БД, которая будет использоваться. Когда для создания индекса включается Index Server, администратор указывает, где будет находится индексная БД. Вы должны задать в этом поле правильный путь иначе поисковый запрос возвратит пустой результат.

Для отображения результата будем вызывать другую страницу, которая будет получать запрос из поисковой формы и передавать его серверу, причем, обратите внимание, что используется тип GET.

Создание cтраницы для отображения результатов поиска

Теперь очередь за cтраницей результатов, которая будет получать значения из формы, чтобы передать их Index Server.

Общий схема ее работы будет следующей:

  • Открывается набор записей recordset
  • Используя стандартные методы ADO cоздается цикл через весь полученный recordset
    <%
    'Создаем объект 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. Попробуйте его, это действительно просто! Создав собственную поисковую систему вы придатите вашему сайту более профессиональный вид и предотвратите преждевременный уход пользователей с сайта, так как у них теперь появится возможность быстро найти все ваши документы.



  •  Распечатать »
     Правила публикации »
      Написать редактору 
     Рекомендовать » Дата публикации: 23.01.2001 
     

    Магазин программного обеспечения   WWW.ITSHOP.RU
    Microsoft Office 365 Профессиональный Плюс. Подписка на 1 рабочее место на 1 год
    Microsoft Office 365 Персональный 32-bit/x64. 1 ПК/MAC + 1 Планшет + 1 Телефон. Все языки. Подписка на 1 год.
    Microsoft 365 Business Standard (corporate)
    Microsoft Office 365 Бизнес. Подписка на 1 рабочее место на 1 год
    Microsoft 365 Apps for business (corporate)
     
    Другие предложения...
     
    Курсы обучения   WWW.ITSHOP.RU
     
    Другие предложения...
     
    Магазин сертификационных экзаменов   WWW.ITSHOP.RU
     
    Другие предложения...
     
    3D Принтеры | 3D Печать   WWW.ITSHOP.RU
     
    Другие предложения...
     
    Новости по теме
     
    Рассылки Subscribe.ru
    Информационные технологии: CASE, RAD, ERP, OLAP
    Безопасность компьютерных сетей и защита информации
    Новости ITShop.ru - ПО, книги, документация, курсы обучения
    Программирование на Microsoft Access
    CASE-технологии
    СУБД Oracle "с нуля"
    Программирование на Visual С++
     
    Статьи по теме
     
    Новинки каталога Download
     
    Исходники
     
    Документация
     
     



        
    rambler's top100 Rambler's Top100