การใช้ ASP เพื่อใช้ฟังก์ชั่นของเครื่องมือค้นหานั้นสะดวกมาก แต่จะใช้การค้นหาอัจฉริยะได้อย่างไร หลังจากอ่านบทความนี้คุณจะพบว่ามันง่ายมากที่จะใช้ฟังก์ชั่นนี้ มาติดตามบรรณาธิการของช่องทางเทคโนโลยีใหม่ที่ไม่ถูกต้องเพื่อเรียนรู้เพิ่มเติม!
ขั้นตอนในการใช้การค้นหาอัจฉริยะ ASP
ขั้นตอนแรกคือการสร้างฐานข้อมูลที่เรียกว่า db_sample.mdb (บทความนี้ใช้หมายเลข Access2000
ฐานข้อมูลถูกใช้เป็นตัวอย่าง) และสร้างตาราง t_sample ในนั้น ตาราง t_sample มีฟิลด์ต่อไปนี้:
การกำหนดหมายเลขอัตโนมัติ ID
ข้อความ u_name
u_info บันทึก
ในขั้นตอนที่สองเราเริ่มออกแบบการค้นหาหน้าการค้นหา หน้านี้มีแบบฟอร์ม
(FRM_SEARCH) แบบฟอร์มประกอบด้วยกล่องข้อความและปุ่มส่ง และวางวิธีการของแบบฟอร์ม
ตั้งค่าลักษณะเป็น "รับ" และแอตทริบิวต์การกระทำถูกตั้งค่าเป็น "search.asp" ซึ่งหมายถึงการส่งไปยังหน้าเว็บเอง รหัสมีดังนี้
-
กรุณาป้อนคำหลัก:
ต่อไปเราป้อนส่วนสำคัญของการใช้การค้นหาอัจฉริยะ
ขั้นแรกให้สร้างการเชื่อมต่อฐานข้อมูล เพิ่มรหัสต่อไปนี้ไปยังจุดเริ่มต้นของการค้นหา. asp:
-
Dim Strprovider, CNN
strProvider = "ผู้ให้บริการ = microsoft.jet.oledb.4.0; แหล่งข้อมูล ="
strprovider = strprovider & server.mappath ("/") &
"/data/db_sample.mdb" 'สมมติว่าฐานข้อมูลจะถูกเก็บไว้ในไดเรกทอรีข้อมูลในไดเรกทอรีรากของหน้าแรก
ตั้งค่า cnn = server.createObject ("adodb.connection"))
cnn.open strprovider 'การเชื่อมต่อฐานข้อมูลเปิด
-
ถัดไปตัดสินข้อมูลที่ได้รับจากหน้า ASP และค้นหาในฐานข้อมูล
-
dim s_key, rst, strsql
s_key = trim (คำขอ ("คีย์")) 'รับค่าของคีย์เวิร์ดการค้นหา
ถ้า s_key <> "" แล้ว
ตั้งค่า rst = server.createObject ("adodb.recordset"))
strsql = Autokey (s_key) 'ใช้ฟังก์ชันที่กำหนดเอง Autokey () ที่นี่ฟังก์ชั่น
หมายเลขคือแกนหลักของการค้นหาอัจฉริยะ
rst.open strsql, cnn, 3,2 'รับบันทึกการค้นหา
ถ้า rst.bof และ rst.eof แล้ว
-
ไม่พบผลลัพธ์! - -
-
อื่น
-
ชื่อการค้นหาคือ "< %= s_key %
รายการของ> "พบทั้งหมด < %= rst.recordcount %
> รายการ:
-
ในขณะที่ไม่ได้เป็น rst.eof 'เดินทางทั้งชุดบันทึกเพื่อแสดงตัวอักษรที่ค้นหา
และตั้งค่าลิงก์
-
href = "info.asp? id = <%= rst (" id ")%>" target = "_ blank"> <%= rst ("u_name")
-
<%= ซ้าย (RST
("u_info"), 150) %>>
-
Rst.Movenext
ใช้
rst.close
ตั้งค่า rst = ไม่มีอะไร
สิ้นสุดถ้า
สิ้นสุดถ้า
-
ในรหัสข้างต้นมีฟังก์ชั่นที่กำหนดเอง Autokey ซึ่งเป็นเคอร์เนลที่ใช้การค้นหาอัจฉริยะ
หัวใจอยู่ที่ไหน รหัสมีดังนี้:
-
ฟังก์ชั่น autokey (strkey)
const lngsubkey = 2
Dim Lnglenkey, StrNew1, StrNew2, I, Strsubkey
'ตรวจสอบความถูกต้องตามกฎหมายของสตริงหากไม่ถูกกฎหมายให้ไปที่หน้าข้อผิดพลาด คุณสามารถทำหน้าข้อผิดพลาดได้ตามต้องการ
ทำการตั้งค่า
ถ้า instres (strkey, "=") <> 0 หรือ strey (strkey, "` ") <> 0 หรือ instr
(strkey, "'") <> 0 หรือ instry (strkey, "") <> 0 หรือ strke
Instr (strkey, "'") <> 0 หรือ instry (strkey, chr (34)) <> 0 หรือ strke (strkey, "/")
<> 0 หรือ strke (strkey, ",") <> 0 หรือ strey (strkey, "<") <> 0 หรือ instr
(strkey, ">") <> 0 แล้ว
Response.redirect "Error.htm"
สิ้นสุดถ้า
lnglenkey = len (strkey)
เลือก case lnglenkey
กรณี 0 'หากเป็นสตริงว่างให้ไปที่หน้าข้อผิดพลาด
Response.redirect "Error.htm"
กรณีที่ 1 'หากความยาวคือ 1 จะไม่มีการตั้งค่าค่า
strNew1 = ""
strNew2 = ""
กรณีอื่น 'ถ้าความยาวมากกว่า 1 เริ่มจากอักขระแรกของสตริงและใช้ความยาวเป็น
2 สตริงย่อยเป็นเงื่อนไขการสืบค้น
สำหรับ i = 1 ถึง 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.close
ตั้งค่า cnn = ไม่มีอะไร
-
ข้างต้นคือวิธีการใช้การค้นหาอัจฉริยะ สำหรับความรู้ด้านเทคนิคเพิ่มเติมโปรดดำเนินการต่อเพื่อให้ความสนใจกับช่องทางเทคโนโลยีใหม่ที่ไม่ถูกต้อง!