2011-09-06 61 views
0

我有一個網站,其左側有主要內容,右側網站上的相關商品標題與Youtube中一樣。如何使用標題和標籤搜索大多數相關商品

我想要的是查詢最相關的項目,以顯示在Youtube.com的正確地帶。

更多的信息: 在顯示任何項目的頁面上,有項目標題,圖片,非常簡短的描述和標籤(限於5)。

在數據庫中,我記錄了瀏覽次數,頁面投票數和評論數。
我的問題是我的網頁是泰語,所有單詞的標題和說明都是用單詞之間沒有空格的方式編寫的,這使得很難找到或檢索關鍵字表單標題和說明。

我現在所做的只是查詢具有相似標籤或標籤並按照視圖數量排序的項目。它適用於故事中未關閉的不同項目。我觀察到,對於具有相同標籤的項目(即使是1個標籤),結果幾乎相同。我認爲它應該在任何項目上顯示不同的結果,比如在youtube.com上。

介紹技術信息: 我有主表:entry, entry_tag, tag.

表中存儲entry_id, title,number of view, number of vote, number of comment, etc.
表entry_tag店entry_id, tag_id

表標籤存儲tag_id and tag

我當前的代碼是這樣的:

SELECT DISTINCT t1.* FROM entry AS t1 
INNER JOIN entry_tag AS t2 ON t1.entry_id=t2.entry_id 
INNER JOIN tag AS t3 ON t2.tag_id=t3.tag_id 
INNER JOIN tag AS t4 ON t3.tag=t4.tag 
INNER JOIN entry_tag AS t5 ON t4.tag_id=t5.tag_id 
WHERE t5.entry_id={$entry_id} AND t1.entry_id!={$entry_id} 
ORDER BY view DESC 
LIMIT 20 

任何想法或建議,這樣做?

回答

0

看起來你在查詢中有額外的連接,這對我沒有任何意義。我會做這樣的查詢...

select distinct entry.* 
from entry 
join entry_tag on (entry.entry_id = entry_tag.entry_id) 
join tag on (entry_tag.tag_id = tag.tag_id) 
where tag.tag_id in (<comma separated list of tag id's>) 
order by entry.number_of_views desc 
limit 20 

我傳遞TAG_ID的基礎上對您顯示當前文章的標籤列表。通過這種方式,您將獲得具有相同標籤的所有條目的列表,這些條目由最先查看的標籤排序。您也可能想要通過標籤熱門程度和類似標籤的數量進行排序,以便將流行主題置於最常見標籤的頂部。

+0

我的代碼中的額外連接來自想法,我想用一個輸入作爲entry_id進行查詢,並避免額外的查詢來獲取tag_id,以便代碼爲我提供所有不同的entry_id和同一行中的所有字段。您的代碼也是一個好主意,特別是通過標記人口和類似的標記進行排序。你有想法在單個查詢中做到這一點嗎?謝謝。 –