我正在一個有用戶和用戶生成的文章,畫廊和視頻的網站上工作。我正在嘗試製作一個標記系統並搜索它們。哪個搜索/標籤系統更好?
起初我在考慮tbl_articles,tbl_galleries和tbl_videos我會有一個標題,描述和標籤字段。然後運行像每個以下查詢:爲tbl_galleries和tbl_videos
select * from tbl_articles where match(title, description, tags)
against ('$search' in boolean mode) ORDER BY match(title, description, tags)
against ('$search' in boolean mode) DESC, views desc LIMIT 0, 3
相同的查詢。用戶只需比較用戶名即可。然後用「更多」按鈕(臉譜風格)在結果頁面上顯示三個。
當查看文章,圖庫或視頻時,也會有鏈接到相關內容,所以我只想在LIMIT設置爲'1,3'時使用相同的查詢 - 以避免出現。
Q1 - 該系統如何?
我很高興與系統,直到我發現this
在他們有
- 一個「標籤」表包含兩個 列的主ID和一個獨特的 索引TAG_NAME。
- 一個「類型」表,他們有 另一主ID和一個獨特的 索引「類型」(類別)(我想 我可以用它來 用戶/視頻/條/畫廊)
- 一個'搜索「表中包含 文章的網址,其中來自'tags'和'type'的外部ID爲 。 (我想 ,而不是一個完整的URL我可以 店國外相關ID,以便 我可以生成URL如 article.php ID = ....?)
Q2 - 這系統看起來效率更高......雖然我如何搜索標題或描述?
Q3 - 另一個壞事是每個頁面視圖我都必須加入標籤..所以它可能不是那麼高效。
Q4 - 我的系統也只搜索布爾值,我會更喜歡'喜歡'查詢嗎?我只是鼓勵單詞(stackoverflow樣式)...我意識到儘管在我的系統中搜索'火車站'不會匹配像'火車站'我怎麼解決這個問題?
很多問題......很抱歉,它太長了。謝謝。
謝謝你的回答。還有一個問題......你在哪裏推薦我把標題和描述放在他們的原始表格中? – Mark 2010-01-14 09:40:44
看來他們使用tag_target_name和tag_target_url來構建鏈接到標記的內容。您可以將標題和描述放在他們的位置,但更好的解決方案是將所有信息放在單獨的「articles」表中,並將articles表中的行的id存儲到tag_targets表中。這樣你就不會重複每篇文章中每個標籤的標題和描述。 – 2010-01-14 14:46:55