這可能是一個問題,我失去了更多時間去思考如何做正確的事情,並以最佳優化方式進行思考。製作「hashtag」系統的最佳方式
我有一個表「內容」,並且需要添加選項以將多個「hashtags」或「tags」或「關鍵字」關聯到內容,例如,像「tomato potatos with tomato sauce」這樣的內容具有「鑰匙」:「土豆」,「番茄醬」和「油炸」。
而當我通過一個詞搜索,例如「馬鈴薯」,我需要顯示其中的內容標記這個詞。
問題是,什麼是最好的結構來做到這一點,思考結果的速度,因爲內容表是MyISAM mith超過30 Millon行。
我想在這個:
讓2個表,「contents_hashtags」 (id(INT11), content_id(INT11), hashtag_id(INT11))
和「井號標籤」 (id(INT11), hashtag(VARCHAR(40)))
2個InnoDB的
當用戶創建/修改表的內容表,我在搜索hashtags表並獲取ID,如果不存在hashtag,則在表中創建hashtag,如果存在,則獲取ID,使用此ID在表中創建插入contents_hashtas asociating contents < -contents_hashtas-> hashtahs
在搜索中,使JOINS(LEFT/RIGHT/INNER dude ..)並通過LIKE進行搜索?確切(hashtag =「XXX」)或全文搜索?
此方法正確/快速嗎?我不知道如何與一個大的行數和大流量運行這個..
什麼方法快速搜索? 3桌子還是2桌子的方法? 3表中的方法是JOINs的直接關係,但在2表方法中,hashtag對於內容是「重複的」(因爲id + hashtag無法重複)。如果我搜索例子:content.active = 1 AND(contents.name ='xxx'OR(Contags.hashtag ='XXX'and Content.id = Contags。content_id)) – Zenth 2012-02-15 09:04:18
Upvoted for「或者,將Hashtags Name和ContentId設置爲唯一鍵」。不需要3桌2就足夠了。 – DeepBlue 2017-01-10 23:28:21