Programlamadili.Net Yeni Nesil Programlama Portali
Makale Ara: 
Kullanıcı Adı : Şifre :
  • Makale Kategorileri
Anasayfa
ACPI [0]
Action Script [5]
Ajax [7]
ASP [12]
ASP.NET [23]
Assembly [3]
Bash [1]
C [4]
C# [9]
C++ [10]
Cobol [1]
Delphi [31]
Flash [5]
Html [9]
JAVA [36]
Java Script [12]
JSF [2]
Jsp [5]
Lua [1]
Matlab [2]
MySQL [30]
Oracle [1]
Pascal [31]
Perl [4]
Photoshop [2]
PHP [150]
Python [8]
REXX [6]
Ruby [1]
SEO [5]
Visual Basic [37]
  • Gorsel Ders Kategorileri
Asp [25]
Asp.Net [5]
Csharp [33]
Delphi [3]
Fireworks [4]
Flash [10]
Java Script [0]
Photoshop [0]
PHP [54]
Vb.Net [9]
Visual Basic [4]
  • Dil
English
Deutsch
deutsch
  • Reklam Alani
MySQL / php MySQL Full-text Arama
php MySQL Full-text Arama
Yazar: FERDIKUCUK
Eklenme: 16/03/08    Okunma: 276    
 
 

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 <veli') ali yada veli nin geçtiği satırları arar. Ama ali yeralması arma değerine daha çok etkiler.

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)') ali nin bulunduğu ve veli veya 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.



Taglar: Bir Yazi dosyasindan TXT tabloya veri aktarmak Kendi Admin Panelimden Phpmyadmin Yedegi Nasil Alirim Mysql baglantisi kurmak Mysql BetweenAnd Isleci Mysql Database Uzerinde Stored Procedure Kullanimi MySQL Delete Veritabanindaki Bilgiyi Silmek mysql dersleri Mysql DROP Deyimi MySQL icin Acik Kalma Suresi MySQL ile Matris Olusturmak MySQL ile Subselect Islemini Join kullanarak Yapmak Mysql INNER JOIN Islemi MySQL InsertInsert Into - Veri Eklemek Mysql Like Isleci Mysql ORDER BY Yan Tumcesi Mysql Sum Islevi MySQL Tablosunda Kolon icin Veri Tipini Degistirme Mysql UNION Islemi Mysql UPDATE Deyimi MySQL Veritabanini Yedeklemek MySQL Veritabanina Baglanma Mysql ye kaydedilen bilgilerin nasil ciktisini ali MYSQLde PHP Kullanarak Veri Silme mysql_real_escape_string komutu php MySQL Full-text Arama

Isminiz:
E-mail adresiniz:
Güvenlik Kodu:
  
 

 

Istatistikler ,
Sitemizde su anda 31 kategori, 453 makale , 147 görsel ders ve 131 Ziyaretci bulunmaktadir...
Toplam üye sayimiz : 951

Web Stats Ferdi Tayfur | Memur Muzaffer | Bedava Mp3 indirin | Visual Basic | Rss| Fnex.Net| Forum Dünyasi
Pagerank

Copyright © 2007 Programlamadili.net - Programlama & Tasarim: Recep Ikiz & Ferdi Küçük

| Site Haritasi |

"Ne Aradığını Bilmeyen Bulduğunun Farkına Varamaz "
ACPI Programlama dili, Action Script Programlama dili, Ajax Programlama dili, ASP Programlama dili, ASP.NET Programlama dili, Assembly Programlama dili, Bash Programlama dili, C Programlama dili, C# Programlama dili, C++ Programlama dili, Cobol Programlama dili, Delphi Programlama dili, Flash Programlama dili, Html Programlama dili, JAVA Programlama dili, Java Script Programlama dili, JSF Programlama dili, Jsp Programlama dili, Lua Programlama dili, Matlab Programlama dili, MySQL Programlama dili, Oracle Programlama dili, Pascal Programlama dili, Perl Programlama dili, Photoshop Programlama dili, PHP Programlama dili, Python Programlama dili, REXX Programlama dili, Ruby Programlama dili, SEO Programlama dili, Visual Basic Programlama dili,
Reklam alanı