<?php

    
function getNGramArray$string$qua )
    {
        
$to strlen$string ) - $qua;

        for( 
$i 0$i <= $to$i++ )
            
$ngrams[ ] = substr$string$i$qua );

        return 
array_unique$ngrams );
    }

    function 
compare$a$b )
    {
        if( 
$a'lvl' ] == $b'lvl' ] )
            return 
0;

        return ( 
$a'lvl' ] < $b'lvl' ] ) ? -1;
    }

    
mysql_connect'localhost''root''zaq12wsx' );
    
mysql_select_db'blee' );

    
$word 'programista';
    
$ngrams = array( );
    
$length strlen$word );

    if( 
$length <= )
        
$ngrams array_merge$ngramsgetNGramArray$word) );

    if( 
$length >= )
        
$ngrams array_merge$ngramsgetNGramArray$word) );

    
$ngrams array_merge$ngramsgetNGramArray$word) );

    foreach( 
$ngrams as $gram )
        
$ngramString .= ' ngram = "'$gram .'" OR';

    
$ngramString substr$ngramString0, -);

    
$query mysql_query(  'SELECT word, COUNT( ngram ) AS d
                            FROM ngrams
                            WHERE ('
$ngramString .' )
                            AND LENGTH( word ) BETWEEN '
. ( $length ) .' AND '. ( $length ) .'
                            GROUP BY word
                            ORDER BY d DESC' 
) or die( mysql_error() );

    while( 
$row mysql_fetch_array$queryMYSQL_ASSOC ) )
    {
        if ( 
$row'lvl' ] = levenshtein$word$row'word' ] ) > )
            continue;

        
$words[ ] = $row;
    }

    if( 
count$word ) )
    {
        
usort$words'compare' );
        echo 
'Słowa pasujące do Twojego zapytania: ';

        foreach( 
$words as $word )
            echo 
$word'word' ];
    }
    else
        echo 
'Brak wyników';

?>