|
| Makaleler |
| Toplam Makale |
3330 |
| Yayında |
3150 |
| Bekleyenler |
180 |
| Görüntüleme |
13322846 |
|
|
|
|
Web sitesini indeksleyecek bir Arama Motoru Hazirlamak
Konu: PHP Yazar: Serkan Tarih: 01/04/02
Bir cok kisinin kendi sitesi icin bir arama motoru
olusturmak istedigini gordugum icin PHP ile bu isin nasil yapilacagina baktim.Bir
kac kutuphane gezdikten sonra en sonunda aradigim ornege bir kitapta
rastladim.
Zaten bir onceki yazimda ozellikle degisken veri tipi ve ozelliklerini anlamamiza
yarayan fonksiyonlari makale yapmistim :)
Yazar bir web sitesini indekslemek ve bu indekse dayali bir arama motoru
kurabilmek icin <meta> etiketlerinden yararlanmis.Zaten tum arama motorlarida
siteleri o <meta> etiketlerine gore indeksliyor.
<meta> etiketleri <head> ve </head> etiketleri arasina yaziliyor ve asagidaki
gibi bir yapisi bulunuyor :
<meta name="keywords" content="kelime1,kelime2,kelime3,vb">
<meta name="description" content="Buraya ise sayfanin aciklamasi geliyor...">
Yani her web sayfanizin,kendisi ile ilgili bir anahtar kelime ve aciklama alanina
sahip olmasi gerekiyor.HTML ile bu saglandiginda siteyi indeksleyecek program
bu <meta> etiketlerinin icinde yer alan, "keywords" yani anahtar kelimeler ve
"description" denilen aciklama alani ile sayfayi indeksliyor ve veritabaninda o
sayfa ile ilgili bir satir aciyor.
Bundan ayri olarak veritabanina o sayfanin isminide yaziyor ve arama yapilirken
sayfanin ismi alaninda da aranan kelime icin bir eslesme olup olmadigina bakiliyor.
Boylece "keywords","description" ve "filename" yani sirasi ile "anahtar
kelimeler","aciklama" ve "dosyaadi" olarak uc alan veritabaninda yer aliyor.Birisi
bir seyler aradiginda sayfalarla ilgili sonuclar veritabaninda karsilastiriliyor ve
uyan sonuclar ekrana geliyor.
Hazirladigimiz program veritabanindan bagimsiz calisiyor.yani siz isterseniz
MySQL isterseniz ORACLE isterseniz PostgreSQL veritabanini
kullanabilirsiniz.Program icinde DB.php isimli bir sinif tarafindan veritabanina
baglanti gerceklestiriliyor.Bu dosya PHP ile berber geliyor ve veritabani bagimsiz
uygulama yazmak icin kullaniliyor.Programin yapisina bakinca nasil boyle bir
islemin saglandigini gorebilirisiniz.
Programin ayarlar dosyasindan istediginiz veritabani ismini yazmaniz programin o
veritabani ile ilgili fonksiyonlari kullanarak veritabani ile etkilesime gecemesini
sagliyor...
Hemen hemen butun ayarlar bir tek ayar dosyasindan yapiliyor ama yinede bazi
ayarlar hakkinda konusmak istiyorum.
Ilk olarak sitenizdeki butun dosyalar sizin belirlediginiz bir klasor baz alinarak ice
dogru gidecek sekilde taraniyor.Bu tarama sirasinda sizin belirlediginiz dosya
uzantisina sahip dosyalar indeksleniyor.Ornegin yanlizca sonu .html ile biten
dosyalarin indekslenmesini yada sadece sonu .php ile biten dosyalarin
indekslenmesini saglamak mumkun oluyor.
Asagiya ayar dosyasinin bir ornegini yaziyorum :
dbtype:mysql ; SQL Sunucu ne tip bir veritabani?
Host:localhost ; SQL Sunucu Nerede?
SQL Kullanici Adi
User:turkphp_user ;
SQL Sifresi
Password:****** ;
database_name:turkphp_veritabani ;
Veritabani ismi?
filters:html,htm,php,php3,php4 ; Indekslenecek dosya uzantilari?
saveresults:yes ; Sonuclari kaydet?
basedir:/home/turkphp/public_html ; Indeksleme icin temel alinacak klasor?
Tum ayarlarin yanina turkce olarak ne anlama geldigini yazdim.
Simdi de veritabani icin tablo yapisini inceleyelim :
Tum kayitlari tutmak icin bir tek tablodan yararlanmak yetiyor.Asagidaki SQL
yapisini kendi veritabani sunucunuz uzerinde calistirin,
CREATE TABLE sites_table ( id INT(4) PRIMARY KEY AUTO_INCREMENT, filename
VARCHAR (70), keywords TEXT, description TEXT );
Guzel simdi "sites_table" isminde bir tabloya ve o tablonun icinde yer alan tablo
alanlarini yaratmis oldunuz.Sitemizdeki tum dosyalar indekslendikten sonra bu
alanlara ilgili veriler yazilacak.
Kurulum :
1.Bir paket halinde sikistirilmis dosyayi bilgisayariniza indirin.
2.Web sunucunuza upload yapmadan once 'config.txt' dosyasini acarak
istediginiz ayarlari girin.
3.Yukaridaki SQL sorgusunu uygulayip tabloyu yarattiysaniz,artik dosyalari
sunucuya yukleyebilirsiniz.(Dosyalari herhangi bir klasore koyabilirisiniz ama size
tavsiyem ornegin "arama_motoru" gibi bir klasor acip o dizine "777" erisim haklari
vermenizdir.Cunku indeksleme sirasinda bazi kayit dosyalari yaratilmaktadir.Eger
dosyalara ve dizine "777" erisim hakki vermez iseniz klasorde gerekli izinlere
sahip olmadigi icin program gecici kayit dosyalarini yaratamayacaktir.)
4."arama_motoru" isminde bir dizine dosyalari koydugunuzu kabul edersek,simdi
web tarayicinizdan asagidaki gibi adrese gidebilirisiniz :
http://www.sizinalanadiniz.com/arama_motoru/octopus.php
Sayfa acilir acilmaz sizin ayarlar bolumunde verdiginiz verilere dayanarak siteyi
bastan asagi (sizin belirlediginiz klasorden baslayarak) indekslemeye ve
sayfalarda "keywords" ve "description" meta etiketlerine bakamya
baslayacaktir.Eger bu kayitlara rastlanmaz ise bu alanlar veritabanina bos olarak
kayit edilir ve yanlizca dosyalarinizin ismi veritabaninda bir kayit olarak yer alir.
5.Sitenizin indekslenmesi bittiginde sayfanin en altinda bu verileri veritabanina
yazip yazmak istemediginiz sorulur.Bu islemden sonra artik siteniz indekslenmis
ve aranmaya hazir hale gelmistir.
6.Simdi ornek bir arama yapmak icin,
http://www.sizinalanadiniz.com/arama_motoru/voyager.php
adresine gidebilirsiniz.Ilk olarak sayfa acildiginda indeks sonuclari ve en altta bir
arama kutusu gorunur.Oraya arama kriteri girerek arama islemine
baslayabilirsiniz.Eger basit bir web formu hazirlayarak,her defasinda
veritabanindaki butun sonuclarin ekrana gelmesini engelleyerek yanlizca arama
kutusunun yer aldigi bir sayfa hazirlamak istiyorsaniz ornegin asagidaki gibi bir
html sayfasi hazirlayarak da arama yapabilirsiniz :
<html>
<head>
</head>
<body>
<form action='voyager.php' method='GET'>
Anahtar kelimeleri yaziniz : <input type='text' name='query'>
<input type='submit' value='Aramaya Basla'> </form> </body> </html>
Kurulumu boylece tamamlamis oldunuz.Eger bir sebepten oturu hata mesaji
aliyorsaniz once klasore gerekli izni vermeyi deneyin.Eger klasor izinleri tamamsa
bu sefer veritabani kullanici adi ve sifrenizi gozden gecirin.Bu progrm bazi PEAR
siniflarini kullanmaktadir.Bu sinifilar PHP ile otomatik gelir ve bu konuda bir sikinti
yazamaniz mumkun degildir.
Programi bilgisayariniza indirin :
http://www.turk-php.com/ornekler/search_engine.zip
Serkan Hadi Ceylani serkan@turk-php.com
Bu makale hakkında ek bilgi eklemek için buraya tıklayınız
Bu makalenin yazar yada kaynağını bildirmek için tıklayınız.
Eklenme tarihi: 3-2-2006 Okunma: 2719
|
| Bu Makaleye Verilen Puan: |
|
Kullanıcı Yorumları
Bu makaleye yorum gönderilmemiş, ilk yorumu sen gönder !
İlgili Dökümanlar
|
|
|