Очень удобно использовать ASP для реализации функций поисковой системы, но как реализовать интеллектуальный поиск, аналогичный 3721? Например, когда вы вводите «китайцы» в поле критериев поиска, такие ключевые слова, как «Китай» и «люди», автоматически извлекаются и ищутся в базе данных. Прочитав эту статью, вы обнаружите, что эту функцию очень просто реализовать.
Первым шагом является создание базы данных с именем db_sample.mdb (в этой статье в качестве примера используется база данных Access2000) и создание в ней таблицы T_Sample. Таблица T_Sample включает следующие поля:
ID Автоматический номер U_Name Текст U_Info Примечания
На втором этапе мы приступаем к разработке страницы поиска Search.asp. Эта страница содержит форму (Frm_Search), которая включает текстовое поле и кнопку отправки. И установите для атрибута метода формы значение «get», а для атрибута действия — значение «Search.asp», то есть отправьте его на саму веб-страницу. Код выглядит следующим образом:
Вот фрагмент кода:
<!-- Search.asp -->
<form name="frm_Search" метод="get" action="Search.asp">
Пожалуйста, введите ключевые слова:
<тип ввода="текст" имя="ключ" размер="10">
<тип ввода="отправить" значение="поиск">
</form>
Далее мы вводим ключевую часть реализации интеллектуального поиска.
Сначала установите соединение с базой данных. Добавьте следующий код в начало Search.asp:
Вот фрагмент кода:
<%
Dim strProvider, CNN
strProvider="Provider=Microsoft.Jet.OLEDB.4.0;Источник данных="
strProvider=strProvider & Server.MapPath("") & "datadb_Sample.mdb" Предположим, что база данных хранится в каталоге данных в корневом каталоге домашней страницы.
Установите CNN = Server.CreateObject("ADODB.connection")
CNN.Open strProvider открывает соединение с базой данных.
%>
Далее определяем данные, полученные страницей ASP, и ищем их в базе данных.
Вот фрагмент кода:
<font color="#FF0000">Результатов не найдено! ! ! </шрифт>
<%
Еще
%>
Найдите элементы с именем "<font color="#FF0000"><%= S_Key %></font>" и в общей сложности <font color="#FF0000"><%= RST.RecordCount %></font. > найден элемент: <p>
<%
Пока Not RST.EOF просматривает весь набор записей, отображает искомую информацию и устанавливает ссылку
%>
<!-- Это можно установить в качестве нужной цели ссылки-->
<font style="font: 12pt 宋体"><a href="info.asp?ID=<%= RST("ID") %>" target="_blank"><%= RST("U_Name") % ></a></шрифт>
<!--Показать некоторые детали-->
<font style="font: 9pt 宋体"><%= Left(RST("U_Info"),150) %></font><p>
<%
RST.MoveNext
Венд
RST.Закрыть
Установить RST=Ничего
Конец, если
Конец, если
%>
В приведенном выше коде есть пользовательская функция AutoKey, которая является основой реализации интеллектуального поиска. Код выглядит следующим образом:
Вот фрагмент кода:
<%
Функция AutoKey(strKey)
CONST lngSubKey=2
Dim lngLenKey, strNew1, strNew2, i, strSubKey
'Проверьте корректность строки, если нет, перейдите на страницу ошибки. Вы можете настроить страницу ошибок в соответствии с вашими потребностями.
if InStr(strKey,"=")<>0 или InStr(strKey,"`")<>0 или InStr(strKey,"")<>0 или InStr(strKey," ")<>0 или InStr(strKey ," ")<>0 или InStr(strKey,"")<>0 или InStr(strKey,chr(34))<>0 или InStr(strKey,"")<>0 или InStr(strKey,", ")<>0 или InStr(strKey,"<")<>0 или InStr(strKey,">")<>0, тогда
Response.Redirect "error.htm"
Конец, если
lngLenKey=Len(strKey)
Выберите регистр lngLenKey
Случай 0. Если это пустая строка, перейдите на страницу ошибки.
Response.Redirect "error.htm"
Случай 1. Если длина равна 1, значение не установлено.
стрНов1=""
стрНью2=""
'Case Else Если длина больше 1, начните с первого символа строки и пройдите по подстроке длиной 2 в качестве условия запроса.
Для i=1 To lngLenKey-(lngSubKey-1)
strSubKey=Mid(strKey,i,lngSubKey)
strNew1=strNew1 & " или U_Name, например %" & strSubKey & "%"
strNew2=strNew2 & " или U_Info, например %" & strSubKey & "%"
Следующий
Конец выбора
'Получите полный оператор SQL
AutoKey="Выберите * из T_Sample, где U_Name, например %" и strKey & "% или U_Info, например %" & strKey & "%" & strNew1 & strNew2
Конечная функция
%>
Для реализации интеллектуального поиска основной задачей является автоматическая группировка ключевых слов поиска. Здесь мы используем метод перебора подстроки длиной 2. Почему бы не установить длину подстроки равным 1, 3, 4 или чему-то еще? Это связано с тем, что если длина подстроки меньше 2, что равно 1, функция группировки ключевых слов будет потеряна, а если длина подстроки больше 2, будут потеряны некоторые фразы. Вы можете попробовать изменить CONST lngSubKey=2 на другие числа и сами увидите, какое из них лучше.
Наконец, не забудьте закрыть соединение для передачи данных, чтобы освободить ресурсы.
Вот фрагмент кода:
<%
CNN.Закрыть
Установить CNN=Ничего
%>
На данный момент работа над этой интеллектуальной поисковой системой завершена. Вы также можете продолжать его улучшать, например добавляя нумерацию страниц, выделение и другие функции. Ладно, не буду тратить время зря, пойдем и попробуем.