당신은 생각할 것입니다 : 좋아, 이제 파일에 쓰는 방법을 알고 있습니다. 그러나 우리는 더 할 수 있습니까? 웹 사이트에 대한 검색 기능을 작성해 보겠습니다.
검색 엔진 구축의 열쇠는 재귀입니다. 주로 코드를 작성하여 디렉토리에서 파일을 검색 한 다음 모든 디렉토리 루프에서 동일한 코드를 실행하십시오. 왜냐하면
총 얼마나 많은 하위 디렉토리 수를 결정할 수 없으려면, 검색 코드는 완료 될 때까지 반복해서 실행해야합니다. 재귀 통화는 매우 좋습니다!
검색 페이지를 만들어 봅시다. 사용자가 검색 문자열을 입력하는 HTML 양식이 작성되었다고 가정하십시오.
Dim Objfolder
dim strsearchtext
Dim objfso
strsearchText = request.form (searchText) < - 검색 문자열
'FSO 및 폴더 개체를 만듭니다
set fso = server.createobject (scripting.filesystemobject)
set objfolder = objfso.getfolder (Server.mappath (/))
Objfolder를 검색하십시오
위의 코드는 단순히 변수를 초기화하고 검색 함수는 검색 함수를 실행하며 다음과 같이 설명합니다.
기능 검색 (objfolder)
Dim Objsubfolder
'현재의 모든 파일을 통해 루프
접는 사람
objfolder.files의 각 objfile에 대해
OBJTEXTSTREAM = OBJFSO.OPENTEXTFILE (OBJFILE.PATH, 1) <- 설정하십시오
'파일의 내용을 a로 읽으십시오
변하기 쉬운
strfilecontents = objtextstream.readall
'검색 문자열이 파일에 있으면
링크를 작성하십시오
'파일에
악기 (1, strfilecontents, strsearchtext, 1) 인 경우
response.write <a href =/ & objfile.name & _
> & objfile.name & < /a> <br>
bolfilefound = true
끝 If
objtextstream.close
다음
'여기에 재귀 부분이 있습니다
'이 디렉토리의 하위 폴더, 검색 기능을 다시 실행하십시오.
objfolder.subfolders의 각 objsubfolder에 대해
검색 OBJSUBFOLDER
다음
엔드 기능
파일을 열 수 있으려면 FSO에는 웹 경로가 아닌 실제 파일 경로가 필요합니다. 예를 들어, C : inetpubwwwroot empiindex.html이 아닙니다
www.enfused.com/temp/index.html 또는 /temp/index.html. 후자를 전자로 변환하려면 Server.mappath를 사용하십시오
(filename), filename은 웹 경로 이름을 나타냅니다.
위의 코드는 지정한 초기 디렉토리의 폴더의 각 하위 디렉토리에서 실행됩니다. 여기서 초기 디렉토리는 웹 루트 디렉토리/를 나타냅니다. 그 다음에
지정된 문자열이 포함 된 경우 디렉토리에서 각 파일을 열면 해당 파일에 대한 링크가 표시됩니다.
파일 및 하위 디렉토리 수가 증가함에 따라 검색에 걸리는 시간이 증가합니다. 많은 검색 작업이 필요한 경우 다른 조치를 취하는 것이 좋습니다.
Microsoft의 Index Server Index Server와 같은 방법.