الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

فكرة:تطوير محرك بحث موقعك

مغلق
بدأه محمد خليل أبو صلاح في 9 مايو 2003 · 10 رد · 1,261 مشاهدة · في منتدى تصميم صفحات الويب
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

أكيد كل منا قد صمم محرك للبحث و عادة ما يكون بسيطا جدا لا يتعدى حقل او حقلين للبحث و كل منا يرى أن هناك مواقع لها محركات بحث موسعة .. مثلا نرى حقل للاسم و تحته مجموعة من الخيارات مثل الاسم الحقيقي و العمر و الجنسية و الجنس و البلد و غيرها من الخيارات بشكل يجعلك تقول في نفسك كيف يتم تحديد جملة الاستعلام و هل يلجأ للاحتمالات .. مثلا هناك 3 خيارات فهل سيقوم بكتابة ستة جمل استعلام لاخذ احتمالات الثلاث خيارات؟ و كم سيكون العدد ان كانت الخيارات كثيرة ؟

أنا قمت بكتابة سكريبت صغير و بسيط يقوم بعمل ذلك بكل سهولة و مرونة مهما تعددت الخيارات و سأكتبه الان ثم سأشرحه..

<%@codepage=1256%>

<%

Set cn = CreateObject("ADODB.Connection")

  cn.Open("driver={Microsoft Access Driver (*.mdb)};dbq=" & _

  Server.MapPath("/searchEngine/db.mdb"))



Sub write(text)

  Response.write(text)

End Sub  



loginname=request("loginname")



check_realname=request("check_realname")

realname=request("realname")



check_gender=request("check_gender")

gender=request("gender")



check_applicationid=request("check_applicationid")

applicationid=request("applicationid")



check_dealer=request("check_dealer")

dealer=request("dealer")



check_region=request("check_region")

region=request("region")



if check_realname<>"" or check_gender<>"" or check_applicationid<>"" or check_dealer<>"" or check_region<>"" then

 flag=true

end if 



set rs=createObject("ADODB.recordSet")

SQL="SELECT * FROM users"

 if flag=true then 

   SQL= SQL & " where "

   

  if check_realname<>"" then 

    SQL=SQL & "realName='"&realname&"'"

    stat=True

  end if

  

  if check_gender<>"" then

   if stat=True then SQL=SQL & " and "

   SQL=SQL & "gender='"&gender&"'"

   stat=True

  end if '

 '

 '

 '

 ' هنا يتم تكرار الخطوات حسب الحقول الموجودة

 '

 '

 '



 end if   //end of flag





rs.Open SQL,cn,3,3

if rs.EOF then

 write "not found"

else

 while not rs.eof

  write rs("login") &"<BR>"

  rs.MoveNext

 wend 

end if



rs.Close

set rs=nothing

cn.close

set cn=nothing

%>

فكرة الكود منطقية جدا .. و هي عمل جملة استعلام SQL قابلة للزيادة اوتوماتيكيا حسب الخيارات .. كيف ذلك؟

عادة الحالة الافتراضية هي جملة استعلام بدون شروط و لكن ماذا يحدث لو كان هناك شرط؟ من المؤكد ستزيد على الاقل كلمة where و اسم الحقل الذي ستبحث عنه و القيمة المرسلة التي ستقارن بها .. تابع المثال هنا :

// جملة الاستعلام العادية

SQL="SELECT * FROM users"

// لو كان هناك شرط واحد فقط

SQL="SELECT * FROM users where login=' " & loginName& " ' "

اذا لاحظنا الاختلاف بين الجملتين لذا كانت الفكرة في عمل متغير اسمه flag يكون عادة false و عندما يجد أن أحد الخيارات معلم من خلال ال checkBox الخاص به يتحول تلقائيا ل True و بالتالي نكون تأكدنا أنه على الأقل سيكون هناك شرط واحد على الأقل .. يعني تلزمنا where و جملة المقارنة ..

لكن لو فكرنا قليلا سنجد انه سواء كان هناك شرط واحد او الف شرط ستكون هناك جملة where واحدة و عدد من جمل المقارنة و يفصلها and او or حسب نظام محرك البحث ..

و لو تمعنا قليلا في طريقة لحل ذلك للحفاظ على ديناميكية جملة الاستعلام نجد انه نحتاج لمتغير اخر يعلمنا ان تم إضافة جملة مقارنة أو لأ لأنه أول جملة فقط لا تسبقها كلمة and او or كما قلنا حسب النظام و يمكنكم المقارنة هنا

SQL="SELECT * FROM users where login=' " & loginName& " ' "

SQL="SELECT * FROM users where login=' " & loginName& " ' and pass=' "& pass& " ' "

و بالتالي استخدمنا المتغير stat و الذي هو عبارة عن ال status اي حالة المقارنة و تكون قيمته True في حال وجود مقارنة سابقا ..

طبعا يلزمنا بعد اللمسات الأخيرة و هي إضاة جملة تقوم بتحويل stat إلى قيمة True بعد كل إضافة جملة مقارنة لجملة الاستعلام ..

هكذا نكون أنهينا هذه الفكرة الجميلة و التي ستكون تغيرا في نظري أنا لمطوري مواقع الويب من حيث نظرتهم لطريقة كتابة الكود ..

حظا موفقا و أتمنى أن يكون الشرح مناسبا و مفهوما للجميع و ها أنا أرفق مثالا .. و لا تنسونا من الدعاء :)

searchengine.zip

You can fly while you can touch the sky

#2

كلام حلو

#3

:)الف الف شكر

شكرا علي هذا الشرح الجميل

بصراحة لم اجرب الكود بعد و ان كنت اري ان كل شيء فيه منطقي و سلس للغاية :)

#5

طيب الحمد لله ان هناك من استفاد .. للأسف لا أرى أي تفاعل غير منكم تقريبا .. اذا كان يدل ذلك على مدى خبرة زوارنا فالحمد لله ما شاء الله نكون لا نحسد على القدرات التي عندنا ..

You can fly while you can touch the sky

#6

هل من أحد جرب الطريقة؟

شيء اخر و هو ياريت أي واحد عنده فكرة خاصة بموضوع البحث يطرحها هنا حتى نكون وحدنا الأفكار و ريحنا الأعضاء أثناء البحث ..

You can fly while you can touch the sky

#7

:) والله مبدع أخي أبو صلاح شكرا لك ... وللامام بالتوفيق والله ينصركم على اعدائكم

#8

العفو أخي ..

و الله يسعدني تقديم شيء لاخواني العرب حتى في عز انشغالي و السبب فرحتي لرؤية من يستفيد من الكود .. و أنا لن أبخل بأي فكرة ..

و بالصيف هناك أطنان من الأكواد أحضرها ;)

You can fly while you can touch the sky

#9

بصراحه يا أخ محمد احترم جدا حبك لافادة غيرك ...

صحيح اني لا اعرفك ولا اتردد الا نادرا على الموقع وعند الحاجه

الا انني ادعوا ربي بان يوفقك دنيا واخره ويبعدك عن اولاد الحرام ويزوجك بابنة الحلال في الدنيا والحور العين في الاخرة

ان لم تكن متزوج :rolleyes:

#10

اذا كان لديك اخى محمد خليل ابو صلاح اطنان من الافكار فى الصيف

فاننا لدينا ايضا اطنان من الاستيعاب والمشاركة قربيا ان شاء نفرغ من

تلك الاختبارات اللعينة ونتفرغ للعمل الحقيقى

وفقك الله

#11

اخي محمد درس جميل ووافي..

لكن هناك تساؤل هل بالإمكان حساب نسبة الدقة كما في بعض المواقع العالمية..

مثال:

كلمة البحث محمد

1: محمد - 100%

2:محمود - 50%

3: محروس - 20%

.........وهكذا....

أظن الفكرة واضحة

تحياتي:)

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…