Jacek Kowalski
2014-07-06 1020bf46ae33bb0dc552ad77d0e9a42fce8e337b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
include('../../classes/funcs.php');
$plik = file('./thesaurus.txt');
 
$sqlite = sqlite_open('thesaurus.sqlite') or die(sqlite_error_string(sqlite_last_error($sqlite)));
 
sqlite_query($sqlite, 'CREATE TABLE thesaurus (slowo varchar(255), podobne TEXT)') or die(sqlite_error_string(sqlite_last_error($sqlite)));
 
$len = $rows = 0;
 
foreach($plik as $line) {
    if(substr($line, 0, 1) == '#') {
        continue;
    }
    
    $line = explode(';', iconv('ISO-8859-2', 'UTF-8', rtrim($line)));
    foreach($line as $words) {
        $similar = array();
        foreach($line as $word) {
            if($word == $words) {
                continue;
            }
            $similar[] = $word;
        }
        $similar = implode(', ', $similar);
        $len = max($len, strlen($words) + strlen($similar) + 1);
        $rows++;
        sqlite_query($sqlite, 'INSERT INTO thesaurus (slowo, podobne) VALUES (\''.funcs::utfToAscii($words).'\', \''.$similar.'\')') or die(sqlite_error_string(sqlite_last_error($sqlite)));
    }
}
 
unset($plik);
 
$fp = fopen('thesaurus.res', 'w');
fwrite($fp, $rows.'x'.$len."\n");
 
$data = sqlite_unbuffered_query($sqlite, 'SELECT * FROM thesaurus ORDER BY slowo ASC');
 
while($en = sqlite_fetch_array($data, SQLITE_ASSOC)) {
    fwrite($fp, str_pad($en['slowo'].';'.$en['podobne'], $len, "\0"));
}
 
fclose($fp);
?>