IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası
  reklamver

Etiketlenen Kullanıcılar

Yeni Konu aç Cevapla
 
LinkBack Seçenekler Stil
Alt 01 Temmuz 2012, 15:18   #1
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Mysql Fulltext Arama Sorgusu




Arama sorgularında genellikle like komutu kullanılır. Bunun nedeni like ın (
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
den daha esnek bir yapıda olmasıdır. Mysql içinde arama yapılırken genelde tercih edilen yöntem içeriğin içindeki kelimelerin veya harf dizilimlerinin içinde arana kelimenin veya harf dizisinin geçmesidir . Yani mevcut içerikteki herhangi bir kelimede, aradığımız kelime başata,ortada veya sonda var ise o içeriği doğru içerik olarak alırız. Temel olarak arama sorgusunun mantığı budur. Bir örnek verecek olursak.
PHP Kod:   Kodu kopyalamak için üzerine çift tıklayın!
$sql "select * from `table` where `abc` like '%$aranan%'"

şeklinde olur. % işaretleri joker karakterlerdir. Aradığımız kelime veritabanındaki metnin içindeki bir kelimienin herhengi bir yerinde (başında, sonunda, ortasında) mevcut ise o satır seçilecektir. Basit bir arama scriptini yazmada like işimiz igörebilir, fakat biz daha fazlasını istiyorsak fulltext indexleri imdadımıza koşacaktır.
LIKE tan farklı olarak fulltext indekslerini de kullanabiliriz. MySQL fulltext indeksleri arama sorguları için LIKE fonksiyonundan daha fonksiyoneldir.Diğer bir artısı da arama sonuçlarını önem sırasına göre dizmesidir. fulltext arama tablolardaki VAR,TEXT ve VARCHAR alanlarını fulltext indeks olarak atayıp MATCH fonksiyonunu kullanarak bunlarda arama yapmak olarak özetlenebilir. Fulltext içeriğe sahip alanları bulunan bir tabloyu şöyle yaratabiliriz.
PHP Kod:   Kodu kopyalamak için üzerine çift tıklayın!
    CREATE TABLE konu (id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY  KEY,baslik VARCHAR(100),icerik TEXTFULLTEXT (baslik,icerik)); 

Böylece konu adında bir tablo oluşturmuş olduk ve bu tablonun baslik ve icerik alanlarını fulltext olarak atıyoruz. Arama yapılacak alanları tablo oluşturulduktan sonrada fulltext index olarak da belirleyebiliriz. Bunuda şöyle yapabiliriz.
PHP Kod:   Kodu kopyalamak için üzerine çift tıklayın!
ALTER TABLE `konuADD FULLTEXT `fulltextindex` (`baslik`,`icerik`). 

İçeriklerimizi fulltext yaptıktan sonra tablomuzun şekline şöyle bir bakalım. +----id-------+-----baslik----+-----icerik-----+ 1 Mysql Fulltext arama
PHP Kod:   Kodu kopyalamak için üzerine çift tıklayın!
  SELECT FROM konu  WHERE MATCH (baslik,icerikAGAINST ('arama'); 

sorgusu "arama" geçen icerik yada baslik alanlarına sahip satırları elde etmemizi sağlayacaktır . MATCH fonksiyonu her satıra bir puan verir. Yani aranan kelimenin içeriklerde geçme sayısına göre her satıra bir puan verir ve puanı en yüksek satırı (yani kelimenin en çok geçtiği) en üste gelecek şekilde sıralar. MATCH fonksiyonu AGAINST ten sonra verilen kelimeyi kendinden sonraki fulltext indekslerde arar. Fulltext indexlerde MATCH ile arama yapılırken küçük büyük harfin önemi yoktur. Yani kelime ile KELime aynı kelimedir.
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
PHP Kod:   Kodu kopyalamak için üzerine çift tıklayın!
  SELECT id,baslik,MATCH (baslik,icerikAGAINST ('arama') AS puan FROM konu  WHERE MATCH (baslik,icerikAGAINST ('arama'); 

Sorgusu içinde "arama" geçen satırların id ve baslik alanlarını ve puanları döner.
fulltext aramanın fonksiyonelliği sadece bunlarla bitmiyor. Fulltext arama bazı operatörleri kullanmamıza olanak sağlar. Bu operatörler aranan kelimenin nasıl aranması gerektiği hakkında mysqle bilgi sağlar.
("+") kelimenin mutlaka bulunması gerektiğini belirtir Örnek: +php
("-") kelimenin aramada bulunmamasi yani harici tutulmasi gerektiğini belirtir Örnek: +php "mysql php geçen mysql geçmeyen satırlar çekilir
("< >") operatörleri kelimenin puana olan etkisini belirlemenizi sağlar.
( ) kelimeleri gruplamanızı sağlar.
("~") kelimenin aramada bulunması puanı ters yönde etkiler. Yani ("-") operatörü gibi ama arama sonuçları gösterilir.
("*") sonuna geldiği kelimenin ekli bir şekilde bulunabileceğini belirtir
''çift tırnak'' kelime grubunu arar Örnek: "ışın kılıcı"
fulltext aramada her satır için bir puan döndüğün ve sonuçları bu puana göre sıraladığını söylemiştik. IN BOOLEAN MODE özelliğini kullanarak puana göre sıralama işlemini kapatabiliriz.
PHP Kod:   Kodu kopyalamak için üzerine çift tıklayın!
SELECT FROM konu WHERE MATCH (baslik,icerikAGAINST ('+mysql -php' IN BOOLEAN MODE); 

Sorgusu içinde mysql geçen ama php geçmeyen satırları getirir. Ama sıralamayı puan göre değil de tablodaki sıralarına göre getirir.
İyi çalışmalar.


[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

 
Alıntı ile Cevapla

IRCForumlari.NET Reklamlar
sohbet odaları eglen sohbet reklamver
Cevapla

Etiketler
arama, fulltext, mysql, sorgusu


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 

Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Kapalı
Pingbacks are Açık
Refbacks are Açık


Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
İnfaz Yönetmeliği'nde değişiklik: 'Çıplak arama' yerine 'detaylı arama' CyBeR Güncel ve Son Dakika Haberler 1 12 Kasım 2021 14:02
mysql de türkçe kayıtlı alanlarda arama yapmak hAte MySQL 0 09 Ekim 2014 04:27
MySQL Nedir ve MySQL C++ Builder Bağlantısı Nasıl Yapılır Swat MySQL 0 01 Temmuz 2014 12:59
tuning-primer.sh mysql tuning scripti - mysql performans raporu CeSaRCripS MySQL 0 16 Aralık 2012 15:11
Arama Motoruna Kayit Fiyatı,Arama Motorlarına Kayıt PauL Alternatif Arama Motorları 0 25 Ekim 2011 14:58