Michael Schröpl: Datenmodellierung: Mysql fulltext Recherche

Beitrag lesen

Hi Frank0837,

Ich möchte eine DB erstellen, in der ich z.B. in Gedichten nach Zitaten suchen kann. Die Art der Ausgabe sollte aussehen wie z.B. im Forumsarchiv: Fundstelle und benachbarte Textstrings. Dazu brauche ich den Textkörper, die Überschrift, ein Erstellungsjahr und den Namen des Autors etc.

Was Du aber nicht (unbedingt) brauchst, das ist die Modellierung der Zeile in Deiner Datenstuktur. Du kannst sehr erst mal die Gedichte finden - und als Treffer Deiner Suche dann Links auf einen Gedichte-Viewer generieren, welcher das Gedicht anzeigt und "beautified", also mit einem zusätzlichen CGI-Parameter für den Suchbegriff aufgerufen wird, das Gedicht parsed und das Vorkommen des Suchbegriffs innerhalb des Textes hervorhebt oder was auch immer.
Diese Trennung zwischen Suche und Darstellung ist für Dein Datenmodell absolut wesentlich - denn wenn Dir das gerade Beschriebene ausreicht, dann brauchst Du keinen Substruktur eines Gedichtes modellieren.

Man kann pro Gedicht eine Tabelle

Um Himmels willen, nein. Natürlich eine Tabelle über alle Gedichte, und eine Zeile pro Gedicht - notfalls eine Zeile pro Gedichtszeile, falls Dein Datenmodell das tatsächlicht erzwingen sollte. Und in jeder Zeile eine Referenz auf den Primärschlüssel einer anderen Tabelle, in welcher dann Meta-Daten des Gedichts (Autor etc.) gespeichert sind - diese werden also erst dazu geJOINt.

Also alle Gedichte in eine Tabelle:

Ja.

Es erhebt sich die Frage, wie man die Texte gegenseitig abgrenzt

Eine Zeile pro Gedicht.

und wie man in dem jeweiligen Abschnitt der Tabelle die jeweils korrekten Verweise auf Titel, Jahr und Dichter setzt.

Wenn Du nur eine Zeile pro Gedicht hast, dann ist das kein Problem. Hast Du mehrere Zeilen pro Gedicht, dann hast Du also eine n:1-Relation dieser Tabelle zu der Menge der Gedichte - und folglich lagerst Du dann die Meta-Daten des Gedichts in eine andere Tabelle aus, deren Primärschlüssel dann das einzige weitere Feld Deiner Gedichte-Text-Tabelle wird.

Viele Grüße
      Michael

--
T'Pol: I apologize if I acted inappropriately.
V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.