41
Ich versuche zur Zeit die als heruntergeladenen Dateien vorhandenen Wörterlisten in Datenbanktabellen zu überführen. Die Wörterlisten sind leider nicht einheitlich. So muß ich das Skript an jede neu anpassen. Schon mit der ersten Wörterliste (Niederländisch) habe ich MySQL an seine Grenzen getrieben. Das schließe ich daraus, daß phpMyAdmin immer wieder eine andere Anzahl an Einträgen in die Tabelle anzeigt. Man braucht lediglich die Seite neu zu laden und ohne etwas verändert zu haben steht dann wieder eine andere Zahl da. Die Zahlen liegen zwischen 150 000 und 240 000 Einträgen. Wieviele Einträge kann eine Tabelle haben, bevor MySQL ins Schwimmen kommt?
Es ist völlig klar, daß eine einfache Wörterliste, die nichtmal Anspruch auf Vollständigkeit erhebt, nicht zu so vielen Einträgen führen sollte. Üblicherweise kennt ein gebildeter Mensch ungefähr fünftausend Wörter seiner Muttersprache. Fremdsprachler und weniger gebildete Menschen sollten zwischen zweitausend und dreitausend Wörter beherrschen. Darum würde ich davon ausgehen, daß die Datenbank eines schon länger etablierten Wörterbuches eher um die fünftausend Wortpaare enthält. Die Nichteindeutigkeit von Rückübersetzungen berücksichtigend, könnten es auch zwanzigtausend bis vierzigtausend sein. Aber kaum über fünfzigtausend. Eine Datenbank mit mehr als zwanzigtausend solcher Einträge ließe sich wahrscheinlich schon noch besser organisieren, so daß es weniger Einträge würden.
Tatsächlich kommen in den Wörterlisten häufig Wiederholungen vor. Es wäre natürlich sinnvoll, die nur einmal einzutragen. Es gibt zwar viele Tutorials, die erklären, wie man eine doppelte Eintragung aus einem Formular verhindert, aber es ist etwas ganz anderes, wenn man eine Quelle vorliegen hat, die viele einfache Einträge enthält, aber darunter dann doch doppelte und mehrfache. Das einfache Eintragen dauerte schon Stunden. Aber wegen einiger (mit Regulären Ausdrücken verursachten) Fehler muß ich das wohl nochmal machen. Dabei sollte ich die Wiederholungen vermeiden. Muß ich vor jedem Eintrag die ganze Tabelle auf Duplikate untersuchen? Ich befürchte nämlich, daß die benötigte Zeit dann gegen unendlich gehen dürfte. Oder es zumindest Tage dauert, um das Skript einmal laufen zu lassen. Dabei wüßte ich nichtmal ob es funktioniert oder ob ich das Skript nicht besser abbrechen sollte.
Wahrscheinlich wird PHP auch nicht mitmachen, wenn ich vorher versuche, erstmal alles in einem Array mit ungefähr zweihundert Elementen zwischenzulagern, nur um darin die gleichen Elemente löschen zu können.
In MySQL gibt es DISTINCT für SELECT und man kann Tabellenspalten auf UNIQUE setzen. Aber ich brauche so etwas für die Kombination zweier Spalten beim INSERT. Was kann ich da tun? Oder kann ich zumindest hinterher gleiche Einträge wieder loswerden? Jeder Eintrag hat eine fortlaufende Indexnummer, weil MySQL einen Key verlangt und es jedes Tutorial so macht und ich es dann so nachmache. Der gesamte Eintrag ist dadurch nicht gleich, aber die Kombination der nächsten beiden Spalten kann gleich sein und das sollte nicht sein.
Ranma
Es ist völlig klar, daß eine einfache Wörterliste, die nichtmal Anspruch auf Vollständigkeit erhebt, nicht zu so vielen Einträgen führen sollte. Üblicherweise kennt ein gebildeter Mensch ungefähr fünftausend Wörter seiner Muttersprache. Fremdsprachler und weniger gebildete Menschen sollten zwischen zweitausend und dreitausend Wörter beherrschen. Darum würde ich davon ausgehen, daß die Datenbank eines schon länger etablierten Wörterbuches eher um die fünftausend Wortpaare enthält. Die Nichteindeutigkeit von Rückübersetzungen berücksichtigend, könnten es auch zwanzigtausend bis vierzigtausend sein. Aber kaum über fünfzigtausend. Eine Datenbank mit mehr als zwanzigtausend solcher Einträge ließe sich wahrscheinlich schon noch besser organisieren, so daß es weniger Einträge würden.
Tatsächlich kommen in den Wörterlisten häufig Wiederholungen vor. Es wäre natürlich sinnvoll, die nur einmal einzutragen. Es gibt zwar viele Tutorials, die erklären, wie man eine doppelte Eintragung aus einem Formular verhindert, aber es ist etwas ganz anderes, wenn man eine Quelle vorliegen hat, die viele einfache Einträge enthält, aber darunter dann doch doppelte und mehrfache. Das einfache Eintragen dauerte schon Stunden. Aber wegen einiger (mit Regulären Ausdrücken verursachten) Fehler muß ich das wohl nochmal machen. Dabei sollte ich die Wiederholungen vermeiden. Muß ich vor jedem Eintrag die ganze Tabelle auf Duplikate untersuchen? Ich befürchte nämlich, daß die benötigte Zeit dann gegen unendlich gehen dürfte. Oder es zumindest Tage dauert, um das Skript einmal laufen zu lassen. Dabei wüßte ich nichtmal ob es funktioniert oder ob ich das Skript nicht besser abbrechen sollte.
Wahrscheinlich wird PHP auch nicht mitmachen, wenn ich vorher versuche, erstmal alles in einem Array mit ungefähr zweihundert Elementen zwischenzulagern, nur um darin die gleichen Elemente löschen zu können.
In MySQL gibt es DISTINCT für SELECT und man kann Tabellenspalten auf UNIQUE setzen. Aber ich brauche so etwas für die Kombination zweier Spalten beim INSERT. Was kann ich da tun? Oder kann ich zumindest hinterher gleiche Einträge wieder loswerden? Jeder Eintrag hat eine fortlaufende Indexnummer, weil MySQL einen Key verlangt und es jedes Tutorial so macht und ich es dann so nachmache. Der gesamte Eintrag ist dadurch nicht gleich, aber die Kombination der nächsten beiden Spalten kann gleich sein und das sollte nicht sein.
Ranma