웹사이트를 구축할 때 사장님께서 바이두처럼 검색 기능을 구현해 달라고 하셨습니다. 과거 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 다음
응답.리디렉션 "error.htm"
종료 조건
lngLenKey=렌(strKey)
케이스 선택 lngLenKey
사례 0 빈 문자열인 경우 오류 페이지로 이동
응답.리디렉션 "error.htm"
사례 1 길이가 1이면 값이 설정되지 않습니다.
strNew1=""
strNew2=""
'Case Else 길이가 1보다 큰 경우 문자열의 첫 번째 문자부터 시작하여 쿼리 조건으로 길이 2를 사용하여 하위 문자열을 반복합니다.
i=1의 경우 lngLenKey-(lngSubKey-1)로
strSubKey=Mid(strKey,i,lngSubKey)
strNew1=strNew1 & " 또는 U_Name like %" & strSubKey & "%"
strNew2=strNew2 & " 또는 %" & strSubKey & "%"와 같은 U_Info
다음
선택 종료
'전체 SQL 문 가져오기
AutoKey="U_Name like %" & strKey & "% 또는 U_Info like %" & strKey & "%" & strNew1 & strNew2인 T_Sample에서 * 선택
기능 종료
%>