الجمعة، 11 فبراير 2011

عالم محركات البحث و تقنيات SEO (تعالو نبرمج محرك بحث)

السلام عليكم ورحمة الله تعالى وبركاته
درس اليوم هو من أهم الدروس وهو شرح وتضيح فكرة برمجة محرك و برمجة العناكب Web Crawling & Spiders


لنبدأ بفكرة محرك بحث :
محرك بحث هو مجرد موقع بس يحتاج لقواعد تخزينية كبير كالاوراكل Oracle وايضا سيرفرات ضخمة فكما نعلم
Google تمتلك الاف السيرفر ذو مواصفات كبير وهدا سرها الاول والاخير المهم سنشرح فكرة محرك بحث

الفكرة هي برمجة سكريبت له عناكب Spiders فيكون السكريبت يبحث في الروابط المخزنة في القاعدة الروابط التي يضيفها الناس فالارشفة او الروابط التانوية المضافة من طرف العناكب المهم فعندما يضيف
الزائر رابط ، السيرفر لازم يكون مشغل دائما يعني لازم التنفيد يبقى دائم المهم تم اضافة الرابط
فيتم ارسال عنكب أول للموقع عمل العنكب هو جلب الروابط التانوية من القاعدة فيقوم بجلب الروابط في الصفحة داخل وسوم <a> من بعد بتاكد هل هي مخزنة في القاعدة من قبل ادا كان لا يضيفها عندما سنتهي من نصفح كل روابط الموقع في تلك الصفحة الاولى ترسل عناكب لكل صفحة في الموقع مخزنة ودلك بدالة التكرار
للبيانات المخزنة في المصفوفة التي فيها بيانات القاعدة للروابط فتذخل وتنفد نفس العملية السابقة حتى تتحقق من وجود الروابط وتعيد العملية وتخزن الكيودرس الاساسيين TAGS KEYWORD metaCODS حتى لا تجد شيء جديد اوه الان انتهينا من عناكب الروابط الان (حسب المحرك )

فيجود نوعين من الطرق الان :
الطريقة الاولى هي عند طلب البحث يبحث في الحين داخل الورابط الموجودة والتي لها الكيوردس المتعلقة بالموقع
والطريقة التانية هي الافضل والتي تخفف عملية البحث لكنها تحتاج لقوة تخزينية هائلة
عند انتهاء الروابط يرسل عنكب اخر وله مهام مختلف
مهام هدا هو جمع الكلمات المتكررة في الصفحات يعني صفحة فيها كلمة متككر تلاتة مرات وهده ادن كلمة داهمية طبعا لا تحسب الحروف الاقل من تلاتة حروف كحرف 'ان' او 'ثم' والتي لها علاقة بالكيوردس والميتا تغس من بعد يتم تخزينه في قاعدة والاعمدة تكون لها الاندكساسيون iNDEXASTION ليتم البحث السريع وهكدا عند البحث يبحث عن الكلمات ويظهر الروابط ودلك باستعمال Join او استعلامين مربوطين
ولا تنسى لازم نحدد وقت لخروج لعنكبوت او سيدوم دائما في الموقع
الان شرحنا الفكرة

الان لنشرح اهمية Sitemaps & Robots.txt ودعمهم في المحركات

فعندنا تدخل العنكب الاول لجلب الروابط فاولا يقوم بدخول لملف Robots.txt ليرى هل لديه التصريح في الدخول لبعض المجلدات ام انه ممنوع من الدخول للسيرفر بتاتا
هدا شيء بسيط جدا
والتاني هو Sitemaps وهي ملفات تغدية Rss او Xml فهده تسهل على محركات البحث عملية ارسال العنكب الاول
ام يتم ارساله خفيف وبهدا سيتخطى خطوتين ويقوم بارسال فقط العنكب الاخير وفي هده النقطة سيكون للعنكب الاخير دورين وهو جمع الكيوردس والكلمات والتحقق في نفس الوقت

الان لنشرح ما هي PageRank
ان غوغل لها خوارزمية خاصة لحساب البيج رانك ، المهم فانا براي ان كل محرك بحص يعمي خوارزمية خاصة به
لحساب البيج رانك ويغير الاسم لكي لا ياتر على اهمية البيج فمتلا انا اسميه Level rank وفيه خوارزمية محركي الخاصة

الان ساقوم بوضع لكم تطبيقات لبرمجة محرك بحث

اولا تفضلو كلاس يقوم بجلب روابط الموقع :d:d

توجد طريقتين عبر cUrl او عبر التعبيرات القياسية Regex Regular Expressions

فانا لا انصح ب cUrl لان معظم السيرفرات لا تدعمها فانا انصح بالتعبيرات القياسية وجلب وسوم <a>
المهم هدا الكلاس خاص بجلب الروابط


رمز PHP:

<?
class fetchlinks
{
var $_isolated_links;
var $_txt;
var $href;
var $caption;
var $url;
function fetchlinks($_url)
{
$this->_txt=file_get_contents($_url);
$this->_txt=str_replace("<A",'<a',$this->_txt);
$this->_txt=str_replace("</A>",'</a>',$this->_txt);
$this->url=$_url;
}
function _isolate()
{
$j = 0;
for ($i=0;$i<=strlen($this->_txt);$i++)
{

if (substr($this->_txt,$i,1+1)=="<a")
{
$j++;
$st=$i;
$k=$i;
while (substr($this->_txt,$k,3)!="/a>")
{
$k++;
}
$en=$k+2+1;
$this->_isolated_links[$j]=substr($this->_txt,$st,$en-$st);
}

}
}
function get_links()
{
$this->_isolate();
$k=0;
$n=0;
for ($i=1;$i<=count($this->_isolated_links);$i++)
{

for ($j=1;$j<=strlen($this->_isolated_links[$i]);$j++)
{
if (substr($this->_isolated_links[$i],$j,5)=='href=')
{
$n++;
$st=$j+5;
$m=$j+5;
while (substr($this->_isolated_links[$i],$m,1)!='>')
{
$m++;
}
$en=$m;
$temp=substr($this->_isolated_links[$i],$st,$en-$st);
if (strpos($temp,' ')>0) $temp=substr($temp,0,strpos($temp,' '));
$temp=str_replace('"','',$temp);
$temp=str_replace("'","",$temp);
if (substr($temp,0,1)=="/") $temp="$this->url".$temp;
if (substr($temp,0,7)!="http://") $temp="$this->url/".$temp;
if (!isset($p)) $p=0;
$this->href[0]="";
if (substr($temp,0,7)=="http://" && $temp!=$this->href[$p])
{
$p++;
$this->href[$p]=$temp;
}

while (substr($this->_isolated_links[$i],$m,1)!='>')
{
$m++;
}
$st=$m+1;
while (substr($this->_isolated_links[$i],$m,4)!='</a>')
{
$m++;
}
$en=$m;
if (substr($temp,0,7)=="http://")
{
$this->caption[$p]=substr($this->_isolated_links[$i],$st,$en-$st);
}
}
}
}
}
function show_href($mode)
{
$this->get_links();
for ($i=1;$i<count($this->href);$i++)
{
if ($mode==0) echo $this->href[$i]."\n<br>\n"; else echo $i."-->".$this->href[$i]."\n<br>\n";
}
}
function show_caption($mode)
{
$this->get_links();
for ($i=1;$i<=count($this->caption);$i++)
{
if ($mode==0) echo $this->caption[$i]."\n<br>\n"; else echo $i."-->".$this->caption[$i]."\n<br>\n";
}
}
}
?>


طريقة الاستعمال


رمز PHP:

<?php
include "fetch.class.php";
$spider=new fetchlinks("http://yahoo.com");
echo "Link Captions:<br>";
$spider->show_caption(1);
echo "<br>";
echo "Link Targets:<br>";
$spider->show_href(1);
?>

$spider->show_caption(1); هدا يظهر الرابط
$spider->show_href(1); وهدا يظهر مضمون الهريف اي ما يوجد داخله
وقم باستبدال الرقم 1 برقم الرابط الدي تريد وادا اردت اظهر
مصفوفة كاملة تستخدم دالة Print_r



فتحت هذا الموضوع حتى يكون منطلقنا ان شاء الله للبدا في التفكير في صنع محرك بحث عربي البرمجة ... لكل من يود دخول عالم العناكب و الزحف فليضع ردا هنا و ان شاء الله نصنع محرك بحث بمواصفات جد عالية :)

ليست هناك تعليقات:


جميع الحقوق محفوظة TH3 Professional security ©2010-2013 | جميع المواد الواردة في هذا الموقع حقوقها محفوظة لدى ناشريها ، نقل بدون تصريح ممنوع . Privacy-Policy| اتفاقية الاستخدام|تصميم : ألوان بلوجر