Umsetzung einer Datenbank für Informationen

Ich hoffe das ich mit diesem Thema den rictigen Bereich getroffen habe, weil ich nämlich keinen fertiges Script suche, sondern Tipps zur Umsetzung.

Ich plane eine Informationsdatenbank für Artikel, Notizen usw. in Textform. Man speichert einen x-beliebigen Text in einer seperaten Datei und kann dann später danach suchen. Das komplizierte ist, dass nicht nur nach Dateinamen gesucht werden soll. Es soll auch im Text der Datei gesucht werden. Ich gebe z.B. das Wort "Computer" ein und er listet mir alle Dateien auf, in der das Wort "Computer" steht. Zu der Umsetzung hätte ich 2 Fragen.


1. Welches Dateiformat soll ich verwenden?

Diese Frage ist eigentlich die wichtigste, den die Art der Datei bestimmt jede zukünftige Weiterverarbeitung. Mir sind 2 Punkt wichtig. Sie sollte auf unterschiedlichen Systemem laufen (Microsoft, Linux, MacOS, PDAs usw.). Den ich weiß ja nicht mit welchem Systemen ich in Zukunft arbeiten werde. Ausserdem sollte die Dateigröße möglichst klein bleiben. Deshalb fällt z.B. PDF schon mal weg

Zuerst habe ich an .txt gedacht. Das läuft aber soweit ich weiß nur auf Windows. Danach habe ich an HTML gedacht. Dadurch ist man aber immer an einen Browser und eventuelle an einen Server gebunden.

Deshalb bin ich auf XML gekommen. Ich habe mich bisher noch nicht so sehr mit XML beschäftigt, aber soweit ich weiß ist es Systemübergreifend und man kann es sehr gut in die unterschiedlichen Programmiersprachen integrieren. So könnte ich beim Umstieg auf ein anderes System die Informationsdateien weiter benutzen und müsste nur auf ein anderes Such- und Anzeigeprogramm umsteigen.


2. Wie soll ich am besten nach dem Textcontent suchen?

Zu dem Punkt habe ich ehrlich gesagt noch keine Vorstellungen, weil ich bisher nur HTML und die PHP Basics kenne. Eine "normale" Programmiersprache kommt erst als nächstes dran. Ausserdem ist dieser Punkt sehr von Punkt 1 abhängig.


Ich hoffe ihr könnt mir ein paar Tipps zur Umsetzung geben. Ihr könnt meine bisherigen Ideen auch gerne umwerfen und was ganz neues vorschlagen. Alles was mir wichtig ist, dass ich für jede Information (Artikel, Notiz, Beschreibung usw.) eine einzelne Datei habe. Ausserdem sollte sie nicht auf ein Betriebssystem beschränkt sein.
 
Hallo,
Original von BigDevil
Zuerst habe ich an .txt gedacht. Das läuft aber soweit ich weiß nur auf Windows.
Lol (bitte nicht böse nehmen)

Vergiss bitte den ganzen Schwachsinn mit Dateiformaten, weder XML, HTML, PDF oder was auch immer ist dafür geeignet, was du brauchst nennt sich Datenbank.

Dies ist die gängige Lösung, egal ob bei Wikipedia oder hier im Board, die Texte sind in der Datenbank hinterlegt und wie du siehst kann man diese auch Durchsuchen, und zwar Volltextdurchsuchung.

Vorteil für dich:
Du musst dir wenig Gedanken machen wie man schnell nach Wörtern sucht, außerdem ist eine Datenbank im Vergleich zu XML oder HTML (oO) extrem Platzsparend, verbraucht nur minimal mehr als wenn du es in Textdateien speichern würdest.
Außerdem gibts gängige SQL Server, z.B. MySQL, für so gut wie jedes Betriebssystem und die Datenbank-Daten (;)) sind auch Betriebssystem unabhänig, hier empfiehlt sich die Exportierung ins SQL Format wenn man Tabellen transferieren, bzw. sichern (backup), will.


PS:
Wenn du PHP weiterlernst, wirst du vermutlich sehr schnell mit MySQL in Kontakt kommen, da dieses echt essentiell ist.
Also einfach weiterlesen bis MySQL dran kommt. Sollte es in dem Buch/Tutorial nicht behandelt werden, dann überlegen ob man sich nicht ne andere Lektüre sich anlegt.
 
Wer hat dir den Floh ins Ohr gesetzt, dass *.txt nur mit Windows geht?

Ob du das letztendlich als HTML, XML oder in irgendeinem anderen abgefahrenen Format speicherst ist egal, denn das ist letztendlich alles Text. Ein bisschen Speicher sparst du natürlich, wenn du normalen Plaintext nimmst, ohne irgendwelches Formatierungsgedöns. Soweit ich dich verstehe, willst du ja auch nur eine stupide Volltextsuche darauf loslassen, also keine Suche nach bestimmten Kriterien. In diesem Falle kannst du dir auch den Overhead, den XML da verursachen würde, sparen.

Beachten solltest du bestenfalls Zeichensätze.


[EDIT]
Ein Datenbankmanagementsystem wie MySQL wäre selbstverständlich erste Wahl, aber gesetzt dem Falle du bestehst auf Textdateien, dann sollte es plain sein ;)
 
Ich für meinen Teil würde (vorausgesetzt es soll nicht über ein fertiges (SQL)-Datenbanksystem laufen) auf XML setzen.
Du kannst es (auf jedem Betriebssystem) selbst in Texteditor lesen und es gibt für jede brauchbare Programmiersprache massenweise Tools zum schreiben und interpretieren. Wenn du auf ein anderes Format exportieren willst, kannst du das mit XSLT auch mit sehr geringem Aufwand tun.
Und im Gegensatz zu Plaintext, kannst du mehr (bzw. besser) Informationen reinbringen, da XML hierarchisch ist und z.B: eine CSV-Datei relational (also eher linear). Zudem liest sich eine Textdatei im Texteditor nicht so schön.

Bsp: Buchinformationen
CSV:
Schöne neue Welt|Aldous Huxley|2004|29. Auflage|Schießmichtot-Verlag|Kurze Zusammenfassung ...

XML:
<buch>
<titel>Schönen neue Welt</titel>
<autor>Aldous Huxley</autor>
<Auflage>
<Erscheinungsjahr>2004</Erscheinungsjahr>
...


Ich würde XML wegen dieser Vorteile (und der Tatsache, dass der Zeichensatz im XML eindeutig festgelegt wird) den Vorzug geben.

mfg, metax.
 
Ich dachte ja auch das .txt auf jedem System läuft, aber dann habe ich einfach mal bei Wiki nach txt gesucht und das hier gefunden. Der erste Punkt hat mich schon stutzig gemacht, ob eine .txt Datei auch auf einem anderen System läuft.

Mir ist schon klar das es mit PHP und MySQL am einfachsten wäre, aber mir sind die einzelnen Dateien schon sehr wichtig.
 
Es ist natürlich klar, das eine Datenbank sehr viel performanter wäre (d.h. schneller beim Suchen - vergleiche mal Google und die Microsoft-Desktop-Suche oder grep). Da du aber auf einzelne Dateien bestehst, würde ich dir auch zu reinen Text-Dateien raten.

Du hast ja anscheinend vor, Textdateien zu erstellen, die irgendwo abzuspeichern / abspeichern zu lassen und dann automatisch durchsuchen zu lassen. Da wäre es natürlich sinnlos, in diese Dateien irgend ein XML-Zeug reinzubasteln. Alles in eine einzige Textdatei zu packen und dann per XML zu trennen ist auch eher unpraktisch, wenn du beispielsweise XML speichern willst. Das müsste man dann wieder escapen, was deutlich mehr Aufwand und Geschwindigkeitseinbußen insgesamt bedeuten würde. Schließlich müssten bei jeder Suche die XML-Tags "überlesen" werden.

PS: Bei Wikipedia ist im ersten Punkt die Dateiendung ".txt" gemeint, die beispielsweise bei Linux nicht zwingend ist. Man benutzt txt allerdings auch als Abkürzung für "Textdatei", und reinen Text gibt es bei jedem Betriebssystem.
 
Da wir hier in Code-Kitchen sind:
ich würde das ganze in TXT belassen und nur einen Indexer bauen, der Einträge in einem (Patricia) Trie (http://de.wikipedia.org/wiki/Trie) verwaltet.
In den Knoten dann die Datei mit Position des Wortes speichern. Das einzige, was hier etwas Überlegung erfordert, wäre eine effiziente Indexierung (im Sinne von: es werden nur neue Dateien indexiert und nicht jedesmal alle).
Die Textsuche sollte (wenn man nicht patzt ;) ) bei dieser Aufgabenstellung MySQL&Co[1] um Längen schlagen können, vor allem da man dem Benutzer direkt Teilergebnisse präsentieren kann (er tippt ein: "Comp" und als Ergebnis kann man einfach alle Knoten im Teilbaum C-O-M-P-* auflisten).

[1]ich glaube, deren Vorteile liegen nicht gerade in reiner Textsuche ;).
 
Wenn du keine Datenbank verwenden willst ist LaTeX vielleicht ein Kompromiss für dich. Es sind Plaintext-Dateien die du sowohl unter Linux wie auch Windows zu voll formatierten PDF-Dateien kompilieren kannst.
 
Was das txt unter win bez. Unix/Linux angeht:

Unix/Linux nutzt ein "Line Feed" (0x0A) zum bezeichnen eines Zeilenendes, Windows hingegen nutzt ein "Carriage Return" (0x0D) + "Line Feed"(0x0A).

Deswegen werden Zeilenumbrüche von Linux txts in Notepad auch nich angezeigt, bez. als unbekannte Symbole [] dargestellt.

Man kann ja aber auch selber einen Delimiter festlegen, und anhand von dem die Dateien Zeilenweise parsen...

so far
IsNull
 
Original von Eydeet
Du hast ja anscheinend vor, Textdateien zu erstellen, die irgendwo abzuspeichern / abspeichern zu lassen und dann automatisch durchsuchen zu lassen.

Am besten beschreibe ich mal etwas besser was ich vorhabe. Dann versteht ihr wohl besser was ich vor habe.

Ich schreibe für eine andere Seite Artikel, mache mir oft Notizen zu wichtigen Infos die ich in einem Buch finde oder speichere irgendwelche Texte aus dem Internet. Gestern habe ich mir z.B. ein Rezept für ein scharfes Chiligericht aus dem Netz gesucht und als .txt in einem Ordner gespeichert. Letzte Woche habe ich mir eine Anleitung zum Hochglanzpolieren eines Metallteils als .txt gespeichert. Ich sortiere das schon vorher alles in passende Themenordner. Oft gibt es aber Texte die zu mehreren Themen passen und dafür brauche ich die Suchfunktion, den ich habe keine Lust 20 Ordner zu durchsuchen. Ich will mir also eine Art Mini-Wiki für mich alleine erstellen.

Der Grund warum ich alles als eigene Datei haben möchte und nicht als MySQL Datenbank, ist ganz einfach. Ich möchte jederzeit schnell drauf zugreiffen können, um es z.B. zu editieren. Ausserdem kann man sie Daten besser auf andere Geräte übertragen.

Deshalb ist mir das Dateiformat auch so wichtig. Ich weiß nicht was ich in Zukunft für ein System benutze. Vielleicht habe ich ja mal einen Desktop PC mit Windows und Linux, ein MacBook und einen PDA mit Windows Mobile. Trotzdem möchte ich die Möglichkeit haben die Dateien mit allen Geräten zu lesen und zu bearbeiten.
 
Oft gibt es aber Texte die zu mehreren Themen passen und dafür brauche ich die Suchfunktion, dann ich habe keine Lust 20 Ordner zu durchsuchen. Ich will mir also eine Art Mini-Wiki für mich erstellen.

ich habe eine echtzeitsuche in c# für dich da, interesse?
außerdem hätt ich noch eine suchfunktion die ordner durchsucht und alle gefunden Dateien mit bestimmten endungen, wie zb .txt, werden dann in einer Datenbank mit Pfad und endung abgelegt und können geöffnet werden.

Du könntest dann eine form machen in der du dann die texte aus deinen txt dateien anzeigen und ändern könntest?

wanna know more? ;)
 
Zurück
Oben