من السهل جدًا استخدام ASP لتنفيذ وظائف محرك البحث، ولكن كيف يمكن تنفيذ بحث ذكي مشابه لـ 3721؟ على سبيل المثال، عند إدخال "شعب صيني" في مربع معايير البحث، يتم تلقائيًا استخراج الكلمات الرئيسية مثل "الصين" و"الشعب" والبحث عنها في قاعدة البيانات. بعد قراءة هذه المقالة، ستجد أن هذه الوظيفة سهلة التنفيذ للغاية.
الخطوة الأولى هي إنشاء قاعدة بيانات باسم db_sample.mdb (تستخدم هذه المقالة قاعدة بيانات Access2000 كمثال) وإنشاء الجدول T_Sample فيها. يتضمن جدول T_Sample الحقول التالية:
المعرف الرقم التلقائي U_Name النص U_Info ملاحظات
في الخطوة الثانية نبدأ بتصميم صفحة البحث Search.asp. تتضمن هذه الصفحة نموذج (Frm_Search)، والذي يتضمن مربع نص وزر إرسال. وقم بتعيين سمة أسلوب النموذج على "الحصول على" وسمة الإجراء على "Search.asp"، أي إرسالها إلى صفحة الويب نفسها. الرمز هو كما يلي:
إليك مقتطف الكود:
<!-- Search.asp -->
< اسم النموذج = "frm_Search" طريقة = "الحصول على" إجراء = "Search.asp">
الرجاء إدخال الكلمات الرئيسية:
<نوع الإدخال = "نص" اسم = "مفتاح" حجم = "10">
<نوع الإدخال = "إرسال" القيمة = "بحث">
</form>
بعد ذلك ندخل إلى الجزء الأساسي من تحقيق البحث الذكي.
أولاً، قم بإنشاء اتصال بقاعدة البيانات. قم بإضافة التعليمات البرمجية التالية في بداية Search.asp:
إليك مقتطف الكود:
<%
خافت strProvider، سي إن إن
strProvider="Provider=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>
<%
بينما يقوم Not RST.EOF باجتياز مجموعة السجلات بأكملها، ويعرض المعلومات التي تم البحث عنها ويقوم بتعيين الارتباط
%>
<!-- يمكن تعيين هذا كهدف الرابط الذي تحتاجه-->
<font style="font: 12pt 宋体"><a href="info.asp?ID=<%= RST("ID") %>" target="_blank"><%= RST("U_Name") % >></أ></الخط>
<!--عرض بعض التفاصيل-->
<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 ثم
الاستجابة.إعادة توجيه "خطأ.htm"
نهاية إذا
lngLenKey=لين(strKey)
حدد حالة lngLenKey
الحالة 0 إذا كانت سلسلة فارغة، فانتقل إلى صفحة الخطأ
الاستجابة.إعادة توجيه "خطأ.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 like %" & strKey & "% أو U_Info like %" & strKey & "%" & strNew1 & strNew2
وظيفة النهاية
%>
لتحقيق البحث الذكي، يتمثل جوهر الأمر في تجميع الكلمات الرئيسية للبحث تلقائيًا. هنا، نستخدم طريقة التكرار عبر سلسلة فرعية بطول 2. لماذا لا يتم ضبط طول السلسلة الفرعية على 1 أو 3 أو 4 أو أي شيء آخر؟ وذلك لأنه إذا كان طول السلسلة الفرعية أقل من 2، وهو 1، فسيتم فقدان وظيفة تجميع الكلمات الرئيسية، وإذا كان طول السلسلة الفرعية أكبر من 2، فسيتم فقدان بعض العبارات. يمكنك محاولة تغيير CONST lngSubKey=2 إلى أرقام أخرى وسترى بنفسك أيهما أفضل.
وأخيرًا، لا تنس إغلاق اتصال البيانات لتحرير الموارد.
إليك مقتطف الكود:
<%
سي إن إن. إغلاق
اضبط CNN = لا شيء
%>
عند هذه النقطة، تم الانتهاء من محرك البحث الذكي هذا. يمكنك أيضًا الاستمرار في تحسينه، مثل إضافة ترقيم الصفحات والتمييز والوظائف الأخرى. حسنًا، لن أضيع وقت الجميع، فلنذهب ونجرب ذلك.