Beste Möglichkeit, ein "Hashtag" -System zu erstellen

8

Dies ist möglich, ein Problem, was ich mehr Zeit verloren habe zu denken, wie man richtig macht, denken in der besten optimierten Weise zu tun.

Ich habe eine Tabelle "Inhalt", und muss die Option hinzufügen, um mehrere "hashtags" oder "tags" oder "keywords" mit den Inhalten zu verbinden, zum Beispiel, der Inhalt wie "fritierte Kartoffeln mit Ketchup" haben die " Schlüssel ":" Kartoffel "," Ketchup "und" gebraten ".

Und wenn ich nach einem Wort suche, zum Beispiel "potato", muss ich den Inhalt anzeigen, in dem das Wort enthalten ist.

Die Frage ist, was ist die beste Struktur, dies zu tun, denken Sie an die Geschwindigkeit der Ergebnisse, weil die Inhaltstabelle eine MyISAM mit mehr als 30 Millon Zeilen ist.

Ich denke darin:

Machen Sie 2 weitere Tabellen, "contents_hashtags" (id(INT11), content_id(INT11), hashtag_id(INT11)) und "hashtags" (id(INT11), hashtag(VARCHAR(40))) die 2 Tabellen in InnoDB

Wenn der Benutzer den Tabelleninhalt erstellt / ändert, suche ich in der Hashtags-Tabelle und erhalte die IDs, wenn ein Hashtag nicht existiert, erstelle ihn im Hashtag der Tabelle, falls vorhanden, erhalte die ID unter Verwendung dieser IDs Erstellen Sie die Einfügungen in der Tabelle contents_hashtas asociating contents & lt; -contents_hashtas- & gt; Hashtahs

Bei der Suche, mach die JOINS (LINKS / RECHTS / INNER Kumpel ..) und suche nach LIKE ?? von genau (hashtag="XXX") oder FULL TEXT SEARCH?

Ist diese Methode richtig / schnell? Ich weiß nicht, wie das mit einer großen Reihe zählt und viel Verkehr.

    
Zenth 14.02.2012, 18:18
quelle

2 Antworten

2

Eigentlich ist eine zusätzliche Tabelle genug

"hashtags" (ID (INT11), Hashtag (VARCHAR (40))), content_id (int11))

Jetzt kannst du Hastag einfach mit dem Namen hinzufügen. Um alle Hashtags für einen Inhalt zu erhalten, verwenden Sie

%Vor%

Um ein Hashtag hinzuzufügen, löschen Sie es mit seiner ID oder seinem Hashtag. Um Inhalte für bestimmte hastags zu erhalten, benutze einfach

%Vor%

und so weiter

    
Somesh Mukherjee 14.02.2012, 18:28
quelle
3

Drei Tabellen werden den Trick machen:

Inhalt, Hashtags und ConTags. ConTags wird eine Junction-Tabelle sein, die contents.id und hashtags.id enthält. Auf diese Weise können Sie jedem Element in Contents mehrere Hashtags zuweisen.

%Vor%

Alternativ können Sie Hashtags Name und ContentId als eindeutigen Schlüssel festlegen und die Junction-Tabelle wird nicht mehr benötigt

    
citizenen 14.02.2012 18:37
quelle

Tags und Links