• 07-01-2008, 16:53:47
    #1
    Üyeliği durduruldu
    Şimdi yazdığım sistemde karşı taraftan gelen metin veritabanındaki en benzeyen ile eşlenecek.
    Google'da did you mean var onun gibi bişi benim aradığım.
    Birkaç sistem düşündüm aklımda ama tam olmuyor mesela wildcard
    olarak ekleyebiliyoruz mysqlden SIMILAR TO kullandığımızda
    ama bana bu değilde googledaki gibi lazım misal bi cümle yazdı
    cümleye en çok benzeyen veriyi çekmesi gerek?
    Hangi yolla yapmamı önerirsiniz gerek mysql gerekse php yönünden ?
  • 07-01-2008, 17:06:00
    #2
    Üyeliği durduruldu
    Sanırsam kendi aradığımı kendim buldum
    Sphider'da olduğu aklıma geldi incelediğimde veritabanındaki
    kelime listesinden yakın olanları çıkarma mantıklıymış. Bu mantık
    gayet işimi görür tabi daha iyisini yada kolayı varsa yazarsa sevinirim

            if ((count($result_array_full) == 0 || $possible_to_find == 0) && $did_you_mean_enabled == 1) {
                reset ($searchstr['+']);
                foreach ($searchstr['+'] as $word) {
                    $word = addslashes($word);
                    $result = mysql_query("select keyword from ".$mysql_table_prefix."keywords where soundex(keyword) = soundex('$word')");
                    $max_distance = 100;
                    $near_word ="";
                    while ($row=mysql_fetch_row($result)) {
                        
                        $distance = levenshtein($row[0], $word);
                        if ($distance < $max_distance && $distance <4) {
                            $max_distance = $distance;
                            $near_word = $row[0];
                        }
                    }
    
                    if ($near_word != "" && $word != $near_word) {
                        $near_words[$word] = $near_word;
                    }
    
                }
                $res['did_you_mean'] = $near_words;
                return $res;
            }
    ve
        if (isset($result['did_you_mean'])) {
            $did_you_mean_b=$query;
            $did_you_mean=$query;
            while (list($key, $val) = each($result['did_you_mean'])) {
                if ($key != $val) {
                    $did_you_mean_b = str_replace($key, "<b>$val</b>", $did_you_mean_b);
                    $did_you_mean = str_replace($key, "$val", $did_you_mean);
                }
            }
        }
    www.sphider.eu burdan da scripti bulup isteyen inceleyebilir