คุณอาจคิดว่า: โอเคตอนนี้ฉันรู้วิธีเขียนลงในไฟล์ แต่เราสามารถทำมากกว่านี้ได้ไหม ลองสร้างฟังก์ชั่นการค้นหาสำหรับเว็บไซต์
กุญแจสำคัญในการสร้างเครื่องมือค้นหาคือการเรียกซ้ำ ส่วนใหญ่เขียนโค้ดชิ้นหนึ่งเพื่อค้นหาไฟล์ในไดเรกทอรีจากนั้นเรียกใช้รหัสเดียวกันในลูปไดเรกทอรีทั้งหมด เพราะ
เพื่อที่จะไม่สามารถกำหนดจำนวนไดเรกทอรีย่อยทั้งหมดได้รหัสการค้นหาจะต้องดำเนินการซ้ำแล้วซ้ำอีกจนกว่าจะเสร็จสิ้น การโทรแบบเรียกซ้ำดีมาก!
มาสร้างหน้าการค้นหา สมมติว่ามีการสร้างแบบฟอร์ม HTML โดยที่ผู้ใช้ป้อนสตริงการค้นหา
Dim objfolder
Dim strsearchtext
Dim objfso
strSearchText = request.form (searchText) < - สตริงการค้นหา
'สร้างวัตถุ FSO และโฟลเดอร์
ตั้งค่า fso = server.createObject (scripting.filesystemobject)
ตั้งค่า objfolder = objfso.getFolder (server.mappath (/))
ค้นหา objfolder
รหัสข้างต้นเพียงเริ่มต้นตัวแปรและฟังก์ชั่นการค้นหาจะดำเนินการฟังก์ชั่นการค้นหาซึ่งอธิบายไว้ดังนี้:
การค้นหาฟังก์ชั่น (objfolder)
dim objsubfolder
'วนซ้ำทุกไฟล์ในปัจจุบัน
โฟลเดอร์
สำหรับแต่ละ objfile ใน objfolder.files
ตั้งค่า objtextstream = objfso.opentextfile (objfile.path, 1) < - สำหรับการอ่าน
'อ่านเนื้อหาของไฟล์เป็นไฟล์
ตัวแปร
strfileContents = objtextstream.readall
'ถ้าสตริงการค้นหาอยู่ในไฟล์แล้ว
เขียนลิงค์
'ไปยังไฟล์
ถ้า instr (1, strfileContents, strsearchtext, 1) แล้ว
Response.write <a href =/ & objfile.name & _
> & objfile.name & < /a> <br>
bolfilefound = true
สิ้นสุดถ้า
objtextstream.close
ต่อไป
'นี่คือส่วนการเรียกซ้ำ - สำหรับแต่ละ
'โฟลเดอร์ย่อยในไดเรกทอรีนี้เรียกใช้ฟังก์ชั่นการค้นหาอีกครั้ง
สำหรับ OBJSubFolder แต่ละตัวใน objfolder.subfolders
ค้นหา objsubfolder
ต่อไป
ฟังก์ชันสิ้นสุด
เพื่อให้สามารถเปิดไฟล์ FSO ต้องใช้เส้นทางไฟล์จริงไม่ใช่เส้นทางเว็บ ตัวอย่างเช่นมันคือ c: inetpubwwwwroot empiindex.html ไม่ใช่
www.enfused.com/temp/index.html หรือ /temp/index.html หากต้องการแปลงหลังเป็นอดีตให้ใช้เซิร์ฟเวอร์. mappath
(ชื่อไฟล์) ชื่อไฟล์แสดงถึงชื่อเส้นทางเว็บ
รหัสข้างต้นจะถูกดำเนินการในแต่ละไดเรกทอรีย่อยของโฟลเดอร์ภายใต้ไดเรกทอรีเริ่มต้นที่คุณระบุซึ่งไดเรกทอรีเริ่มต้นหมายถึงไดเรกทอรีรูทเว็บ/ แล้ว
เพียงเปิดแต่ละไฟล์ในไดเรกทอรีเพื่อดูว่ามีสตริงที่ระบุหรือไม่
โปรดทราบว่าเมื่อจำนวนไฟล์และไดเรกทอรีย่อยเพิ่มขึ้นเวลาที่ใช้ในการค้นหาจะเพิ่มขึ้น หากคุณต้องการงานค้นหาหนักคุณควรใช้มาตรการอื่น ๆ
วิธีการเช่นเซิร์ฟเวอร์ดัชนีดัชนีของ Microsoft