• 19-12-2009, 15:43:04
    #1
    merhaba;
    bir şey aradık mesela : "yazan" , bu na benzer konular bulmak istiyorum mesela
    yazın
    yuzun
    yaşam
    yegane
    bunu mysql i yormadan en basit şekilde nasıl yapabilirim bi fikri olan var mı ?
    kısacası aranan kelimeye , harf sıralamasına göre yaparsak 3 ve daha fazla harfi benzicek. teşekkürler
  • 19-12-2009, 15:45:59
    #2
    THR
    Üyeliği durduruldu
    mysql in böyle bir fonksiyonu vardı lisedeyken görmüştüm ama not almadım aylardır arıyorum bulamıyorum. hatta incelerken google'ın bunu mu demek istediniz özelliği gibi kullanırım demiştim. az çok bişiler buldum.

    hocam bunlarla birşeyler yapılabilir belki
    http://tr.php.net/levenshtein
    http://tr.php.net/manual/tr/function.similar-text.php
    http://tr.php.net/manual/tr/function.soundex.php

    levenshtein e bir örnek

    http://urbanoalvarez.es/blog/2008/05...u-mean-in-php/


    belki ip ucu
       1.
          SELECT * FROM TABLOISMI WHERE SOUNDEX(ALANADI) = SOUNDEX(”STRING DEGER”);
    http://www.kivancciftci.com/php-mysql-ve-soundex/
  • 19-12-2009, 16:17:18
    #3
    http://www.dmry.net/php-levenshtein-...imeleri-bulmak
    Buraya da bakabilirsiniz.
  • 19-12-2009, 16:48:24
    #4
    Üyeliği durduruldu
    Kolay gelsin

    <?php
    $aranan = 'ogz'; 
    $kelimeler  = array('oguz koc','oguzhan koc','oguzcuk','oguzkoc.com.tr', 
                    'onurcan','oguzhan','ozan'); 
    $mesafe = -1; 
    foreach ($kelimeler as $kelime) { 
        $lev = levenshtein($aranan, $kelime); 
        if ($lev == 0) { 
            $nerede = $kelime; 
            $mesafe = 0; 
            break; 
        } 
        if ($lev <= $mesafe || $mesafe < 0) { 
            $nerede  = $kelime; 
            $mesafe = $lev; 
        } 
    } 
    echo "Aranan:". $aranan."<br><br>\n"; 
    if ($mesafe == 0) { 
        echo "Yazdığınız Kelimeye Ait Sonuç: $nerede\n"; 
    } else { 
        echo "Bunumu Demek İstediniz?: $nerede\n"; 
    } 
    ?>
  • 19-12-2009, 16:56:17
    #5
    BHCoder adlı üyeden alıntı: mesajı görüntüle
    Kolay gelsin

    <?php
    $aranan = 'ogz'; 
    $kelimeler  = array('oguz koc','oguzhan koc','oguzcuk','oguzkoc.com.tr', 
                    'onurcan','oguzhan','ozan'); 
    $mesafe = -1; 
    foreach ($kelimeler as $kelime) { 
        $lev = levenshtein($aranan, $kelime); 
        if ($lev == 0) { 
            $nerede = $kelime; 
            $mesafe = 0; 
            break; 
        } 
        if ($lev <= $mesafe || $mesafe < 0) { 
            $nerede  = $kelime; 
            $mesafe = $lev; 
        } 
    } 
    echo "Aranan:". $aranan."<br><br>\n"; 
    if ($mesafe == 0) { 
        echo "Yazdığınız Kelimeye Ait Sonuç: $nerede\n"; 
    } else { 
        echo "Bunumu Demek İstediniz?: $nerede\n"; 
    } 
    ?>
    Güzel bir alıntı olmuş teşekkürler
  • 19-12-2009, 17:01:14
    #6
    Üyeliği durduruldu
    aLp3R3n adlı üyeden alıntı: mesajı görüntüle
    Güzel bir alıntı olmuş teşekkürler
    googleden arasan bulursun zaten fantazi yapalım diyorsan yazarız daha güzelini

    -------------

    orjinalide yayınlıyayım manueldeki.yukarıdakinide oradan alıntı yapmışlar zaten

    <?php
    // input misspelled word
    $input = 'carrrot';
    
    // array of words to check against
    $words  = array('apple','pineapple','banana','orange',
                    'radish','carrot','pea','bean','potato');
    
    // no shortest distance found, yet
    $shortest = -1;
    
    // loop through words to find the closest
    foreach ($words as $word) {
    
        // calculate the distance between the input word,
        // and the current word
        $lev = levenshtein($input, $word);
    
        // check for an exact match
        if ($lev == 0) {
    
            // closest word is this one (exact match)
            $closest = $word;
            $shortest = 0;
    
            // break out of the loop; we've found an exact match
            break;
        }
    
        // if this distance is less than the next found shortest
        // distance, OR if a next shortest word has not yet been found
        if ($lev <= $shortest || $shortest < 0) {
            // set the closest match, and shortest distance
            $closest  = $word;
            $shortest = $lev;
        }
    }
    
    echo "Input word: $input\n";
    if ($shortest == 0) {
        echo "Exact match found: $closest\n";
    } else {
        echo "Did you mean: $closest?\n";
    }
    
    ?>
  • 19-12-2009, 22:11:06
    #7
    teşk arkadaşlar, levenshtein iş görüyor fakat mysql den bunu nasıl sorgulatıcaz ? (SOUNDEX istediğim işi görümüyor)
    hepsini bir array e toplıyım başlıkları, ordan levenshtein çekiyim dedim. o zaman oluyor en yakınını buluyor. ama benim istediğim anlık mysql sorgu yaparak en mantıklısından en mantısızına doğru ilk 10 başlığı vermesi.
  • 19-12-2009, 22:31:19
    #8
    mysql_fetch_array(mysql_query(Select basliklar from konular))

    gibi bir sorgu ile yapabilirsin benimki sadece örnek
  • 19-12-2009, 23:43:36
    #9
    aLp3R3n adlı üyeden alıntı: mesajı görüntüle
    mysql_fetch_array(mysql_query(Select basliklar from konular))

    gibi bir sorgu ile yapabilirsin benimki sadece örnek
    yanlış anlamışsın beni, bu sadece konuları çeker, ben anlık çekerken sorgulatma olayını soruyorum.