При создании веб-сайта начальник попросил меня реализовать функцию поиска, такую как Baidu. Раньше ASP реализовывал нечеткий поиск и соответствующие запросы. ни за что. Поискав в Интернете, я обнаружил, что в Интернете представлено несколько методов: один — создать тезаурус, другой — использовать компоненты сегментации слов, а третий — это то, о чем я говорю, технология автоматической сегментации слов, но это так. это не интеллектуальная сегментация слов, это просто сопоставление каждого другого слова. Лучше всего создать словарь и расширять его на основе пользовательского ввода, но для небольших и средних веб-сайтов в этом может не быть необходимости.
Это третий тип поиска по сегментации слов, о котором я говорю. Код следующий: я не буду вдаваться в подробности, как его использовать.
<%
Функция 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
Конечная функция
%>