عند إنشاء موقع ويب، طلب مني المدير تنفيذ وظيفة بحث مثل Baidu. في الماضي، كان ASP ينفذ بحثًا غامضًا واستعلامات مطابقة. مستحيل. من خلال البحث في الإنترنت، وجدت أن هناك عدة طرق متوفرة على الإنترنت، إحداها هي بناء قاموس المرادفات، والأخرى هي استخدام مكونات تجزئة الكلمات، والثالثة هي ما أتحدث عنه، وهي تقنية تجزئة الكلمات تلقائيًا، ولكنها كذلك. ليست تجزئة ذكية للكلمات، بل هي مجرد مطابقة لكل كلمة أخرى. أفضل شيء هو بناء المفردات وتوسيعها بناءً على مدخلات المستخدم، ولكن بالنسبة لمواقع الويب الصغيرة والمتوسطة الحجم، قد لا يكون ذلك ضروريًا.
هذا هو النوع الثالث من البحث عن تجزئة الكلمات الذي أتحدث عنه، الكود كما يلي: لن أخوض في كيفية استخدامه.
<%
وظيفة المفتاح التلقائي (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
وظيفة النهاية
%>