ArenaFutbol | Futbol'a Dair Her Şey
php MySQL Full-text Arama Uyeol

Sitemizi REKLAMSIZ şekilde gezebilmek için, bütün bölümlere erişebilmek için ve tam anlamıyla faydalanabilmek için lütfen ÜYE OLUNUZ, eğer üye iseniz lütfen GİRİŞ YAPINIZ
ArenaFutbol | Futbol'a Dair Her Şey
php MySQL Full-text Arama Uyeol

Sitemizi REKLAMSIZ şekilde gezebilmek için, bütün bölümlere erişebilmek için ve tam anlamıyla faydalanabilmek için lütfen ÜYE OLUNUZ, eğer üye iseniz lütfen GİRİŞ YAPINIZ
ArenaFutbol | Futbol'a Dair Her Şey
Would you like to react to this message? Create an account in a few clicks or log in to continue.



 
AnasayfaGaleriLatest imagesKayıt OlGiriş yap

 

 php MySQL Full-text Arama

Aşağa gitmek 
YazarMesaj
Rebellious
No-Post !
Rebellious


Favori Oyuncu : Metin Oktay
Mesaj Sayısı : 14623
Puan : 258171
Rep : 2564
Yer : Ali Samiyen
Cinsiyet : Erkek
Kayıt tarihi : 19/08/09
php MySQL Full-text Arama I231076_gsli

php MySQL Full-text Arama Empty
MesajKonu: php MySQL Full-text Arama   php MySQL Full-text Arama EmptyPaz Ocak 10, 2010 2:12 am

PHP-MySQL kullanarak arama modülü yazılırken kullanılabilecek ve yararlı bir özellik



MySQL de
arama sorguları yazarken genel olarak LIKE komutunu kullanırız. LIKE
tan farklı olarak full-text indekslerini de kullanabilriz. MySQL
full-text indeksleri arama sorguları için LIKE fonksiyonundan daha
etkili ve kullanışlıdır. Ayrıca sonuçları rahatça sıraya koymamızı
sağlaması da önemli bir artıdır. full-text arama tablolardaki VAR,TEXT
ve VARCHAR alanlarını full-text indeks olarak atayıp MATCH fonksiyonunu
kullanarak bunlarda arama yapmak olarak özetlenebilir. Alanları
full-text şöyle yapabiliriz.



Kod Çizelgesi Kod Dili: php

CREATE TABLE kitaplar (id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY
KEY,isim VARCHAR(255),icerik TEXT, FULLTEXT (isim,icerik));




Burada kitaplar adında bir tablo oluşturuyoruz ve bu tablonun isim ve
icerik alanlarını full-text olarak atıyoruz. full-text indeksleri daha
sonra ALTER ile de ekleyebiliriz.

Tablonun içeriğinin söyle olduğunu düşünelim.

+---- +------------------- +------------------------------------------+
| id | isim | icerik |
+---- +------------------- +------------------------------------------+
| 1 | MySQL | MySQL çok güzel müthis harika cok guzel |
| | | iyi... |
| 2 | Postgresql | iyi sağlam falan filan.... |
| 3 | Mssql | eh idare eder ... |
+---- +------------------- +------------------------------------------+



Kod Çizelgesi Kod Dili: php
SELECT * FROM articles WHERE MATCH (isim,icerik) AGAINST ('veri');



Sorgusu veri geçen icerik yada isim alanlarına sahip satırları
çekecektir. MATCH fonksiyonu her satıra bir arama değeri verir. Yani
aranan kelimenin geçiş sayısına göre her satıra bir değer verir ve bu
değere göre en değerli satırı (yani kelimeyi ençok içeren) en üste
gelecek şekilde sıralar. MATCH fonksiyonu AGAINST ten sonra verilen
kelimeyi kendinden sonraki full-text indekslerde arar. Arama
küçük/büyük harfe bakmaksızın arar. Yani falan ile FaLAn aynı
kelimedir.


Kod Çizelgesi Kod Dili: php
SELECT id,isim,MATCH (isim,icerik) AGAINST ('veri') AS arama_deger FROM articles WHERE MATCH (isim,icerik) AGAINST ('veri');



Sorgusu içinde veri geçen satırların id ve isim alanlarını ve arama değerlerini döner.

full-text arama bazı operatörlere sahiptir. Bu operatörler aranan kelimenin nasıl aranacağını belirtmenizi sağlar.


+ kelimenin mutlaka bulunması gerektiğini belirtir



- kelimenin aramada bulunmamasi yani harici tutulmasi gerektiğini belirtir

< > operatörleri kelimenin arama değerine olan etkisini belirlemenizi sağlar

( ) kelimeleri gruplamanızı sağlar

~ kelimenin aramada bulunması arama değerini ters yönde etkiler. Yani - operatörü gibi ama arama sonuçları gösterilir.

* sonuna geldiği kelimenin ekli bir şekilde bulunabileceğini belirtir

'' '' kelime grubunu arar

Bu operatörleri örneklendirelim.



AGAINST('ali veli') ali yada veli den herhangi birinin bulunduğu satırları arar

AGAINST('+ali +veli') her ikisinin bulunduğu

AGAINST('+ali veli') ali bulunduğu satırları arar. velinin; bulunduğu satırlar arama değerine artı etkide bulunur

AGAINST('+ali -veli') ali nin bulunduğu ama veli nin bulunmadığı satırları döner

AGAINST('ali*') ali , alice , alinin ,alicik ... lerin bulunduğu satırları arar

AGAINST(''ali veli'') ali veli nin geçtiği satırları arar

AGAINST('>ali
AGAINST('+ali +(veli deli)') ali nin bulunduğu ve veli veya deli kelmelerinden de birini mutlaka bulunduğu satırları arar.

AGAINST('+ali +(>veli deli kelmelerinden de birini mutlaka bulunduğu satırları arar. veli nin
bulunduğu satırlar arama sonucuna deli nin bulunduğu satırlardan daha
çok etki yapar.


full-text aramanın her satır için bir aram değeri döndüğünü ve
sonuçları bu değerlere göre sıraladığını söylemiştik. IN BOOLEAN MODE
özelliğini kullanarak değer dönme işini kapatabiliriz.


Kod Çizelgesi Kod Dili: php
SELECT * FROM kitaplar WHERE MATCH (isim,icerik) AGAINST ('+ali -veli' IN BOOLEAN MODE);



Sorgusu içinde ali geçen ama veli geçmeyen satırları getirir. Ama
sıralamayı arama değerlerine göre değilde tablodaki sıralarına göre
getirir.

full-text aramanın özelliklerini anlatmaya çalıştım. Arama işlemlerinde kolaylık sağladığı kolayca görülmektedir ( :-) ).

MySQL in resmi sayfasında büyük verilerin girişinde full-text
indekslerinin veri girişini yavaşlattığı söyleniyor. full-text
indekslerin veri girişi tamamlandıktan sonra eklenmesi tavsiye
ediliyor.
Sayfa başına dön Aşağa gitmek
http://www.arenafutbol.org
 
php MySQL Full-text Arama
Sayfa başına dön 
1 sayfadaki 1 sayfası
 Similar topics
-
» JSP - MySQL İşlemleri
» mysQl dersleri
» Arama Robotları Tarafından Çabuk İndekslenmenin En İyi 10 Yolu
» Php + MySQL + Apache + PhpMyadmin kurulumu
» Arama Motorlarında Nasıl Yükselebilirim ?

Bu forumun müsaadesi var:Bu forumdaki mesajlara cevap veremezsiniz
ArenaFutbol | Futbol'a Dair Her Şey :: AF Cafe :: Eğlence :: Internet Dünyası :: WebMaster & MSN-
Buraya geçin: