Wir haben hohe Verkehrs Nachrichten - Websites, ich möchte eine Funktion hinzuzufügen , dass jeder Benutzer über alle Inhalte der Website durchsuchen können, wie news
, polls
, comments
, galleries
usw. Jeder Inhaltstyp hat seine eigenen Tabellen.
Ich habe beschlossen, eine Tabelle zu erstellen, die alle Inhalte aller Typen enthält:
CREATE TABLE full_text_search
(
master_id INT NOT NULL,
content_text TEXT NOT NULL,
PRIMARY KEY ( master_id )
);
Ich generiere eine eindeutige Nummer master_id
für jeden Inhalt aller Art, um jeden content_text
in der full_text_search
Tabelle zu identifizieren .
zum Beispiel:
News table:
+----+-------------+---------+---------+----------+------------+
| id | news_title | lead | subtitle| content | master_id |
+----+-------------+---------+---------+----------+------------+
| 1 | sometitle |some lead| subtitle|content 1 | 3 |
| 2 | some title |some lead| subtitle|content 2 | 5 |
+----+-------------+---------+---------+----------+------------+
article table:
+----+-------------+---------+------------------+---------+------------+
| id | title | author | short description| content | master_id |
+----+-------------+---------+------------------+---------+------------+
| 1 | sometitle | someone | very short desc |content1 | 1 |
| 2 | some title | otherone| some short desc |content2 | 4 |
+----+-------------+---------+------------------+---------+------------+
Wie Sie sehen können, master_id
ist zwischen den obigen Tabellen eindeutig. Wann immer ein neuer Inhalt von jedem Typ eingefügt wird, sollte ich INSERT
ihn auch in die full_text_search
Tabelle einfügen .
FRAGEN
- Ist es für viele Beilagen pro Tag (ca. 3000 von allen Typen) eine gute Lösung oder ein Anti-Pattern?
- Ist es eine bessere Wahl, wenn ich diese Tabelle von meinen anderen Tabellen trenne und sie in eine andere Datenbank wie andere RDBMS oder NoSQLs lege?
- Irgendwelche anderen Lösungen?
full_text_search
Wie identifizieren Sie mit der Tabelle das richtige Ergebnis mit dem richtigen Typ und der richtigen ID?