สะดวกมากที่จะใช้ ASP ในการใช้ฟังก์ชันเครื่องมือค้นหา แต่จะใช้การค้นหาอัจฉริยะที่คล้ายกับ 3721 ได้อย่างไร ตัวอย่างเช่น เมื่อคุณป้อน "คนจีน" ในช่องเกณฑ์การค้นหา คำสำคัญเช่น "จีน" และ "คน" จะถูกแยกและค้นหาในฐานข้อมูลโดยอัตโนมัติ หลังจากอ่านบทความนี้ คุณจะพบว่าฟังก์ชันนี้ใช้งานง่ายมาก
ขั้นตอนแรกคือการสร้างฐานข้อมูลชื่อ db_sample.mdb (บทความนี้ใช้ฐานข้อมูล Access2000 เป็นตัวอย่าง) และสร้างตาราง T_Sample ในนั้น ตาราง T_Sample ประกอบด้วยฟิลด์ต่อไปนี้:
ID ตัวเลขอัตโนมัติ U_Name ข้อความ U_Info หมายเหตุ
ในขั้นตอนที่สอง เราเริ่มออกแบบหน้าการค้นหา Search.asp หน้านี้ประกอบด้วยแบบฟอร์ม (Frm_Search) ซึ่งรวมถึงกล่องข้อความและปุ่มส่ง และตั้งค่าแอตทริบิวต์ method ของแบบฟอร์มเป็น "get" และแอตทริบิวต์ action เป็น "Search.asp" นั่นคือส่งไปที่หน้าเว็บนั่นเอง รหัสมีดังนี้:
นี่คือข้อมูลโค้ด:
<!-- ค้นหา asp -->
<ชื่อแบบฟอร์ม = "frm_Search" method = "get" action = "Search.asp" >
กรุณาใส่คำสำคัญ:
<ประเภทอินพุต = "ข้อความ" ชื่อ = "คีย์" ขนาด = "10">
<ประเภทอินพุต = "ส่ง" ค่า = "ค้นหา" >
</แบบฟอร์ม>
ต่อไป เราจะเข้าสู่ส่วนสำคัญของการค้นหาอัจฉริยะ
ขั้นแรก สร้างการเชื่อมต่อฐานข้อมูล เพิ่มรหัสต่อไปนี้ที่จุดเริ่มต้นของ Search.asp:
นี่คือข้อมูลโค้ด:
-
Dim strProvider, ซีเอ็นเอ็น
strProvider = "ผู้ให้บริการ = Microsoft.Jet.OLEDB.4.0; แหล่งข้อมูล = "
strProvider=strProvider & Server.MapPath("") & "datadb_Sample.mdb" สมมติว่าฐานข้อมูลถูกเก็บไว้ในไดเร็กทอรีข้อมูลภายใต้ไดเร็กทอรีรากของโฮมเพจ
ตั้งค่า CNN = Server.CreateObject("ADODB.connection")
CNN.Open strProvider เปิดการเชื่อมต่อฐานข้อมูล
-
ถัดไป กำหนดข้อมูลที่ได้รับจากเพจ ASP และค้นหาในฐานข้อมูล
นี่คือข้อมูลโค้ด:
<font color="#FF0000">ไม่พบผลลัพธ์! - - </แบบอักษร><
-
อื่น
-
ค้นหารายการชื่อ "<font color="#FF0000"><%= S_Key %><</font>" และรวม <font color="#FF0000"><%= RST.RecordCount %><</font >< พบรายการ: <p>
-
ในขณะที่ไม่ใช่ RST.EOF จะสำรวจชุดระเบียนทั้งหมด จะแสดงข้อมูลที่ค้นหาและตั้งค่าลิงก์
-
<!-- สามารถตั้งเป็นเป้าหมายลิงก์ที่คุณต้องการ-->
<font style="font: 12pt 宋体"><a href="info.asp?ID=<%= RST("ID") %><" target="_blank"><%= RST("U_Name") % ></a></แบบอักษร>
<!--แสดงรายละเอียดบางส่วน-->
<font style="font: 9pt 宋体"><%= Left(RST("U_Info"),150) %></font><p>
-
RST.MoveNext
เวนด์
RST.ปิด
ตั้งค่า RST=ไม่มีอะไร
สิ้นสุดถ้า
สิ้นสุดถ้า
-
ในโค้ดข้างต้น มีฟังก์ชัน AutoKey แบบกำหนดเอง ซึ่งเป็นแกนหลักของการค้นหาอัจฉริยะ รหัสมีดังนี้:
นี่คือข้อมูลโค้ด:
-
ฟังก์ชั่นคีย์อัตโนมัติ (strKey)
CONST lngSubKey=2
Dim lngLenKey, strNew1, strNew2, i, strSubKey
'ตรวจสอบความถูกต้องตามกฎหมายของสตริง หากไม่ใช่ ให้ไปที่หน้าข้อผิดพลาด คุณสามารถตั้งค่าหน้าข้อผิดพลาดได้ตามความต้องการของคุณ
ถ้า 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=เลน(strKey)
เลือกกรณี lngLenKey
กรณีที่ 0 ถ้าเป็นสตริงว่าง ให้ไปที่หน้าข้อผิดพลาด
Response.Redirect "error.htm"
กรณีที่ 1 ถ้าความยาวเป็น 1 แสดงว่าไม่มีการตั้งค่า
strNew1=""
strNew2=""
'Case Else หากความยาวมากกว่า 1 ให้เริ่มจากอักขระตัวแรกของสตริงและวนซ้ำผ่านสตริงย่อยที่มีความยาว 2 เป็นเงื่อนไขการสืบค้น
สำหรับ i=1 ถึง lngLenKey-(lngSubKey-1)
strSubKey=กลาง(strKey,i,lngSubKey)
strNew1=strNew1 & " หรือ U_Name เช่น %" & strSubKey & "%"
strNew2=strNew2 & "หรือ U_Info เช่น %" & strSubKey & "%"
ต่อไป
สิ้นสุดการเลือก
'รับคำสั่ง SQL ที่สมบูรณ์
AutoKey="Select * from T_Sample โดยที่ U_Name like %" & strKey & "% หรือ U_Info like %" & strKey & "%" & strNew1 & strNew2
ฟังก์ชันสิ้นสุด
%>
เพื่อให้เกิดการค้นหาที่ชาญฉลาด หัวใจหลักคือการจัดกลุ่มคำหลักในการค้นหาโดยอัตโนมัติ ในที่นี้ เราใช้วิธีการวนซ้ำผ่านสตริงย่อยที่มีความยาว 2 ทำไมไม่ตั้งค่าความยาวสตริงย่อยเป็น 1, 3, 4 หรืออะไรก็ตาม เนื่องจากหากความยาวของสตริงย่อยน้อยกว่า 2 ซึ่งเท่ากับ 1 ฟังก์ชันการจัดกลุ่มคีย์เวิร์ดจะหายไป และหากความยาวของสตริงย่อยมากกว่า 2 วลีบางวลีจะหายไป คุณสามารถลองเปลี่ยน CONST lngSubKey=2 เป็นตัวเลขอื่นแล้วคุณจะเห็นเองว่าอันไหนดีกว่ากัน
สุดท้ายนี้อย่าลืมปิดการเชื่อมต่อข้อมูลเพื่อปล่อยทรัพยากร
นี่คือข้อมูลโค้ด:
-
CNN.ปิด
ตั้ง CNN=ไม่มีอะไร
%>
ณ จุดนี้ เครื่องมือค้นหาอัจฉริยะนี้เสร็จสมบูรณ์แล้ว คุณยังสามารถปรับปรุงต่อไปได้ เช่น การเพิ่มการแบ่งหน้า การเน้นสี และฟังก์ชันอื่นๆ โอเค ฉันจะไม่เสียเวลาของทุกคน ไปลองดูกัน