• 28-03-2009, 13:26:31
    #1
    Üyeliği durduruldu
    Merhaba arkadaşlar

    ad - soyad isimli iki mysql sütunum var. Tek input ile örneğin "Tayyip Erdoğan" diye post ediyorum.

    MySQL'de arama yaparken en sağlam ve uygun sorgu ne olur?

    Şimdiden teşekkürler.
  • 28-03-2009, 13:32:02
    #2
    Üyeliği durduruldu
    Anahtar Kelime : MATCH AGAİNST
    Örnek : İmzam
  • 28-03-2009, 13:39:45
    #3
    Üyeliği durduruldu
    Alıntı
    SELECT adi,soyadi FROM insanlar WHERE MATCH(adi,soyadi) AGAINST ('Tayyip Erdoğan')
    böyle denedim fakat, şu hatayı aldım:

    Alıntı
    #1191 - Can't find FULLTEXT index matching the column list
    nerede hata yapıyorum acaba?
  • 28-03-2009, 13:52:52
    #4
    Üyeliği durduruldu
    İlgili Alanların İndexini FULLTEXT Yapman Lazım.
    Alıntı
    ALTER TABLE `insanlar` ADD FULLTEXT (
    `adi,soyadi`
    )
    gibi...
  • 28-03-2009, 15:40:50
    #5
    Üyeliği durduruldu
    Maalesef bu seferde sorgu boş olarak geri dönüyor, birşey bulunmuyor. =(
  • 28-03-2009, 21:59:32
    #6
    Üyeliği durduruldu
    fulltext aramada sonuç bulmada like a göre iyi değildir.
    4 harfin altında kelimelerde sonuç bulmaz ve kelime arasındaki bir sözcüğüde bulmaz ("fulltext" içinde geçen "lte" vb. arattığında bulmaz)

    sorguda aramayı (cümleleri parçalayıp) like ile, sıralamayı da fulltext ile yaparsan tam istediğin olur.

    like için (ad like '%tayyip%' || ad like '%erdoğan%' ....)
    fulltext için against ('tayyip erdoğan') yerine against ('+tayyip+erdoğan')

    kolay gelsin