Beziehung darstellen

karl_karlson

Neues Mitglied
Hallo,

ich soll in einem aktuellen Projekt ein Wörterbuch programmieren, dass zu jedem Wort eine Beziehung(wie Reim, Synonym uÄ) und das zu dieser Beziehung gehörende Wort/Wörter anzeigt. Allerdings weiß ich nicht, wie ich diese n zu n Beziehungen realisieren soll. Meine aktuelle Idee ist, ich nehme ein Wort mit einem Verweis auf eine Liste mit passenden Beziehungen und jede dieser Beziehung hat einen Verweis auf eine Liste mit passenden Wörtern, allerdings finde ich das sehr kompliziert und aufwändig.

Hier noch ein kleines Beispiel:

Wort: Boot
Beziehungen: Synonym | Reim
Ergebniswort: Schiff | Schlot/Rot


Ich will fragen, ob jemand von euch eine andere Idee für die Realisierung meines Problems hat(Code brauch ich eigentlich nur ein paar Ideen/Vorschläge).


Danke!
 
Was ist denn deine dahinterliegende Datenstruktur? Du könntest ja eine Datenbank verwenden und das ganze einfach über 2 Tabelle modellieren:
Code:
words:
- id
- word

rhymes:
- firstID
- secondID
 
Eine Datenbank dürfen wir leider nicht verwenden und es ist auch vorgegeben, das strategy pattern zu nutzen.

Da n-verschiedene Beziehungen(zu n-Wörtern) möglich sind und es bidirektional sein soll, geht deine datenstruktur meines erachtens nicht.

Ich werde zu morgen mal ein paar Testbeispiele entwickeln, womit vielleicht deutlicher wird, was ich machen soll.

Aber über deine Idee werd ich dennoch mal ausgiebiger nachdenken, vlt kann ich das ja modifizieren, so dass es passt.
 
doch, die Struktur ist mehr oder weniger biderektional du kannst mit 2 SELECT und UNION alle Wörter abfragen, die sich auf Bla reinem oder auf die sich Bla reimt.
 
Meine aktuelle Idee ist, ich nehme ein Wort mit einem Verweis auf eine Liste mit passenden Beziehungen und jede dieser Beziehung hat einen Verweis auf eine Liste mit passenden Wörtern, allerdings finde ich das sehr kompliziert und aufwändig.
Nun ja, ich würde sagen S****** Job 😉 Du kannst sowas wie Reime oder Synonyme nun mal nicht berechnen lassen, das musst du per Hand festlegen. Selbst wenn du eine Datenstruktur aufziehst, die die Verknüpfen in beide Richtungen aufsetzt (zB du sagst Haus reimt sich auf Maus, und das wird automatisch in beide Richtungen verknüpft), dann hast du trotzdem die Arbeit jedes einzelne Wort durchzugehen und zu überlege ob sich das schon mal auf ein voriges Wort geremint hat, d.h. ob du diese Beziehung schon hergestellt hast. Ich glaube da kann man nix machen.. Speicherplatz-technisch ist das alles kein Problem, sofern du darauf achtest dass du die Wörter aus dem String Constant Pool ziehst (ansonsten ist sehr schnell Ende Gelände mit dem Speicherplatz, bei so einer redundanten Datenstruktur).
 
Zuletzt bearbeitet:

Zurück
Oben