Questo è possibile un problema in quanto ho perso più tempo per pensare a come correggere, pensando nel modo migliore ottimizzato per farlo.Il modo migliore per creare un sistema "hashtag"
Ho una tabella "Contenuti", e devo aggiungere l'opzione per associare più "hashtag" o "tag" o "parole chiave" al contenuto, ad esempio, il contenuto come "patate fritte con ketchup" ha il "chiavi": "patata", "ketchup" e "fritto".
E quando faccio una ricerca con una parola, ad esempio "patata", ho bisogno di mostrare il contenuto che contiene questa parola.
La domanda è, quale è la struttura migliore per farlo, pensando alla velocità dei risultati perché la tabella dei contenuti è un mastro MyISAM più di 30 file Millon.
Credo che in questo:
fare più 2 tavoli, "contents_hashtags" (id(INT11), content_id(INT11), hashtag_id(INT11))
e "hashtag" (id(INT11), hashtag(VARCHAR(40)))
2 tavoli InnoDB
Quando l'utente di creare/modificare il contenuto della tabella, I Cerca nel hashtags table e ottenere gli ID, se un hashtag che non esiste, crearlo nell'hashtag della tabella, se esiste, ottenere l'ID, utilizzando questi ID creare gli inserimenti nella tabella contents_hashtas asociating contents < -contents_hashtas-> hashtahs
Nella ricerca, effettuare le JOINS (SINISTRA/DESTRO/Tizio INTERIORE ..) e fai una ricerca di LIKE ?? da esatta (hashtag = "XXX") o RICERCA TESTO COMPLETO?
Questo metodo è corretto/veloce? Non so come eseguire questo con un grande conteggio delle righe e grande traffico ..
Quali sono i metodi di digiunare in cerca? il 3 o 2 metodi di tabella? Nel metodo a 3 tabelle è una relazione diretta da JOINs, ma nel metodo a 2 tabelle l'hashtag è "duplicato" per i contenuti (perché id + hashtag non può ripetersi). Se faccio una ricerca per esempio: content.active = 1 AND (contents.name = 'xxx' OR (Contags.hashtag = 'XXX' e Content.id = Contags.content_id)) – Zenth
Suvviato per "In alternativa, imposta Nome hash e ContentId come chiave univoca". Non c'è bisogno di 3 tavoli 2 sarà sufficiente. – DeepBlue