Feb 28
Da ich mich gerade mit der Volltextsuche in MySQL beschäftigt habe und feststellen musste, dass es garnicht so einfach ist eine deutsche Stoppwortliste zu finden, die ein unnötiges anschwillen des Volltext-Indizes verhindern soll - habe ich mal recherchiert und die gängisten deutschen Wörter in einer Wortliste zusammen gefasst.
Die Stoppwortliste muss dann nur noch auf den Server geladen werden - ich habe sie in /etc/ kopiert, wo auch meine my.cnf liegt - und in der my.cnf muss dann noch folgendes ergänzt werden:
[mysqld]
ft_min_word_len = 3
ft_stopword_file = /etc/stopwords_german
Danach MySQL neustarten, bei mir wäre es “/etc/init.d/mysql restart”.
Um zu prüfen ob alle Einstellungen erfolgreich übernommen wurden, reicht es aus diesen MySQL-Befehl auszuführen:
show variables like 'ft_%'
Wenn schon ein Volltext-Index besteht, muss dieser natürlich erneuert werden. Das macht man mit einem einfachen MySQL-Befehl:
REPAIR TABLE tbl_name QUICK;
Hoffe ich konnte jemand weiterhelfen.
Deutsche Stoppwortliste
Mrz 02
Für ein neues Projekt, welches ich noch nicht bekannt geben möchte, benötige ich einen Datenbank von IP-Ranges und der dazu gehörigen Länder! Also kurz gesagt, ich will wissen welche IP aus welchem Land kommt.
Ich habe auf phpclasses.org eine Klasse (Country From IP) gefunden, die einen Datenbestand von über 42.000 IP-Ranges hat. Allerdings in 5 Textdateien - Also, wäre solch eine Abfrage sehr schmerzhaft für die Performance. Ich habe mir deshalb die Mühe gemacht, alle diese Informationen in eine Datenbank umzusetzen und biete euch hier den SQL-Dump zum Download an. Zusätzlich auch noch ein ZIP-File mit den Flaggen der jeweiligen Länder, die Ihr aber auch in der oben genannten PHP-Klasse findet.
Die IP-Angaben sind als Integer definiert. Das heißt, wenn Ihr das Land einer IP wissen wollt, müsst ihr die IP vorher mit der Funktion ip2long() in einen Integerwert umwandeln.
Download: SQL-Dump
Download: Flaggen als Grafiken
Feb 27
Das Datenaufkommen bei meinem Projekt Spambog.com ist sehr groß, und die Datenbank erreicht eine stattliche Größe!
Es kommt aber oft vor das die Tabelle crasht und dann wieder repariert werden muss. Da ich aber nicht jede Minute dieses prüfen kann, haben ich ein Cronjob laufen, der die betroffene Tabelle jeden Minute prüft und gegebenenfalls repariert.
...
$strSQLCmd = "CHECK TABLE incoming";
$sqlResult = mysql_query($strSQLCmd);
$arrData = mysql_fetch_array($sqlResult);
if (eregi('Table is marked as crashed',$arrData['Msg_text'])):
$strSQLCmd = “REPAIR TABLE incoming”;
$sqlResult = mysql_query($strSQLCmd);
endif;
…
Recent Comments