Wie man Artikel oder andere große Texte in einer Datenbank speichert
Ich bin derzeit in den Prozess der Gestaltung selbst eine Datenbank angetrieben website. Der Hauptgrund ist für Lernzwecke, aber ich werde nicht Lügen, es ist eine kleine Menge von vanity inklusive!
Während ich glaube, dass mein Datenbank-design ist ziemlich gut, so weit bin ich noch nicht ganz sicher auf die beste Art und Weise der Speicherung von Artikeln oder andere große Texte. Ich weiß, die meisten DBMS haben den Datentyp TEXT oder gleichwertig und halten kann, eine enorme Menge von text. Jedoch, die Speicherung eines vollständigen Artikel als eine lange Schnur sorgt für unglücklich Lesen, so dass die Formatierung benötigt werden.
Speichere ich den Artikel-text zusammen mit allen HTML-oder BBcode-tags - oder ist es besser, erstellen Sie einfach die Seite entweder in einem HTML-oder XML-Dokument, und speichern Sie den Pfad zu dieser Datei in der DB?
Ich ganz wie die Idee der Speicherung von Artikeln, wie ein XML-Dokument, wie kann ich leicht markup ein Artikel mit custom-tags und PHP - XML-und XSLT-Funktionen zur Umwandlung von XML in HTML [oder in der Tat, jedes andere format]. Es ermöglicht auch dem Autor zu diktieren, wenn zum erstellen von Zeilen - /Seitenumbrüche. Dieser Ansatz erfordert natürlich zusätzliche Codierung [die ich fürchte mich nicht vor], aber es gibt ein problem mit den Artikeln durchsucht werden kann.
Ich weiß, MySQL, zum Beispiel, hat die SQL-syntax für die Suche nach bestimmten Begriffen/Phrasen in Zeichenfolgen in einem text-Feld. Wenn ich wurden, um text zu speichern in separate Dateien, wie könnte ich den Ansatz machen diese Artikel sind durchsuchbar?
Es ist eine ganze Menge, die ich hier geschrieben habe, auf so eine einfache Frage, also ich werde break it down:
1: gibt es eine "beste" Möglichkeit der Speicherung großer Mengen von formatiertem text direkt in eine Datenbank oder
2: ist es besser zu halten, Pfade, text in form von HTML/XML/Wasauchimmer-Dokumente.
Wenn 2, ist es eine elegante Art und Weise zu machen, dass der text durchsuchbar sind?
Danke für deine Zeit 🙂
InformationsquelleAutor der Frage Etzeitet | 2009-07-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Speichern alles in einem großen Textfeld, wie Alex vorgeschlagen hat. Für die Suche, nicht hammer Ihre Datenbank verwenden Lucene, oder htdig einen index zu erstellen der Ausgabe. Diese Art der Suche sind die sehr schnell. Der Nebeneffekt ist, machen Sie Ihre Suche ein wenig mehr Suchmaschinen-freundlich ist; Sie nehmen Sie Ihre keywords-Feld (wie Schrägstrich angedeutet) und kleben Sie diese in die meta-keywords-Attribut.
Bearbeiten
Es sei denn, Sie sind nur auf der Suche Schlüsselwörter, mit der db zu tun die sucht wird schrecklich langsam (je gesucht ein forum und es dauert EWIG?). Es gibt keinen Weg, der für die Datenbank-index-ein
Es ist frustrierend, suchen einen Artikel und die Suche nicht die Ergebnisse Ihr suchen, weil Sie nicht in das keyword-Feld! Htdig ermöglicht die Suche im Volltext der Artikel effizient. Ihre Suche wird wieder kommen, sofort, und JEDER Begriff in dem Artikel ist vollständig durchsuchbar. Setzen Sie die Schlüsselwörter in den meta tags machen sucht, auf die diese Begriffe kommen höher auf der Ergebnisseite.
Ein weiterer Vorteil ist die fuzzy-matching. Wenn Sie die Suche nach 'aktivieren' htdigg wird die match-Seiten, die aktive, Aktivierung, Aktivitäten, etc. (konfigurierbar). Oder wenn der Benutzer misspells einem Wort, es wird noch abgestimmt werden. Sie möchten, dass Ihre Benutzer über ein Google-ähnliches Erlebnis, nicht stört. 🙂
Müssen Sie ein Skript zum erstellen einer Liste von links zu allen Ihren Seiten aus Ihrer Datenbank. Haben htdig Crawlen dieser automatisch und Sie haben nie daran zu denken.
Auch htdig kriechen Ihre nicht-Datenbank-Seiten so gut wie Ihre gesamte Website ist durchsuchbar durch die gleichen einfachen Schnittstelle.
Als für das keyword-Feld sollte in eine separate Tabelle namens keywords mit der id des Artikels und ein keyword-Feld (1 keyword pro Zeile). Aber für die Einfachheit, mit einem einzigen Feld in der db ist nicht eine schreckliche Idee, es macht die Aktualisierung der keywords ganz einfach, wenn man es in einer form.
Wenn Sie nicht wollen, zu viel Aufhebens mit sich alle Mühe geben, können Sie versuchen, mit
Die benutzerdefinierte Suche von Google. es ist weit weniger Arbeit, aber Sie haben keine Garantie, dass alle Ihre Seiten indiziert.
Glück!
InformationsquelleAutor der Antwort Byron Whitlock
Den TEXT, BIGTEXT, LONGTEXT und andere Datentypen, Felder angelegt wurden, um die große Menge an text (64 KByte bis zu 4 GByte je nach RDBMS). Sie erstellen einfach eine bynary Zeiger zum Auffinden der text in der Datenbank und es ist nicht direkt gespeichert in der Tabelle. Ist fast das gleiche Verfahren, wenn Sie speichern, wird der Pfad in ein varchar-Feld, um das Dokument zu suchen, aber wenn es in der Datenbank macht es einfacher, zu mantain, weil, wenn Sie die Zeile löschen, das Dokument desappears, ohne die Notwendigkeit, es zu löschen, die in anderen Verfahren (als wenn Sie als Datei gespeichert). Logischerweise wird Ihre Datenbank grösser und manchmal nicht so einfacher backup-und Verkehrs -, sondern zum transport der Dokumente eins nach dem anderen wäre mühsam und langsamer.
Wie Sie sehen, es hängt von der Menge der docuements und Zeilen in der Datenbank.
Für die Suche Prozedur, die ich empfehlen eine neue zu erstellen "keywords" - Feld, um die Geschwindigkeit Ihres durchsucht. Sie können die Suche auch in den ersten n Zeichen der Unterlagen zu, Gießen Sie Sie als CHAR-oder VARCHAR und suchen Sie den Titel und den Untertitel in dieser Menge, wenn Sie nicht bereits ein bestimmtes Feld.
InformationsquelleAutor der Antwort backslash17
Je nachdem wie Sie arrangiert und alles installiert, kann es schwierig sein, um Zugang von außerhalb Dateien von remote-clients, die Zugriff auf die DB nur in Ordnung-also warum nicht speichern Sie die XML-Datei in einem TEXT-Feld statt? Sie können umgestalten, Dinge zu optimieren, dass später, wenn die DB-engine nicht verarbeiten kann, dass der laden gut, aber das ist der einfachste Weg, um loszulegen.
InformationsquelleAutor der Antwort Alex Martelli
Nehmen ein kurzer Blick auf native xml-Datenbanken. Gibt es mehrere, und einige sehr gute sind kostenlos.
Suche existieren, Dokument, xDB, Oracle Berkeley.
Wenn Sie beharren, Abfragen und aktualisieren von semi-strukturierten text, und wenn die Struktur hat keine Tiefe, Sie sind fast sicher, es zu tun die harte Weise, wenn Sie stick mit entweder den RDB von Zeigern oder stuff-it-in-a-blob-Techniken-obwohl es gibt viele äußere Gründe, die diese Architekturen werden können, notwendig und erfolgreich.
Tun ein wenig Lesen auf XPath und XQuery bevor Sie sich für ein design. Hier ist ein guter Ort, um zu starten: https://community.emc.com/community/edn/xmltech
InformationsquelleAutor der Antwort