匹配的關鍵字,我有一個鏈接到關鍵字的表項的表項。 我想列出共享關鍵字的所有項目,我想,這樣是最相似的項目將出現最高排名的結果。 所以,我想匹配所有的關鍵字會來最高,匹配列表中出現更低的只有一個關鍵字的項目的項目。如何通過排序相似度
如果項目匹配相同的號碼,我想接着通過關鍵詞的頻率對結果進行排名,以便共享一個不尋常的關鍵字的項目會出現比共享上頻繁出現的關鍵詞項目更高的關鍵字。
目前我的模式是這樣的(但是這可能需要進行變更):
Item ItemKeywords Keywords
____ ____________ ________
ID ItemID ID
Item KeywordID Word
我掙扎,甚至與SQL開始得到最匹配關鍵字的項目。誰能幫忙? 我使用SQL Server 2005
編輯 - (添加的完整性)
使用Beth的SQL作爲指針我想出了下面,我認爲這是工作,我想,只是要做多一點的測試:
SELECT IK1.ItemID,
IK2.ItemID,
COUNT(IK2.KeywordID) AS KeywordCount,
MIN(WordFrequency) AS WordFrequency
FROM ItemKeywords IK1
INNER JOIN ItemKeywords IK2
ON IK1.KeywordID = IK2.KeywordID --Keywords match
AND IK1.ItemID < IK2.ItemID --Eliminate pairs (Bill & Ted but not Ted and Bill or Bill and Bill)
INNER JOIN (SELECT KeywordID, COUNT(*) WordFrequency
FROM dbo.ItemKeywords
GROUP BY KeywordID) AS KF
ON KF.KeywordID = IK2.KeywordID --Join to sub-query to get frequency of word
GROUP BY IK1.ItemID, IK2.ItemID
ORDER BY COUNT(IK2.KeywordID) DESC, MIN(WordFrequency) ASC --Order by most matching keywords then by most unusual word
我已經改變了語法略有避免子查詢(在加入做的一切),我已經改變了IK1.ItemID <> IK2.ItemID
到IK1.ItemID < IK2.ItemID
消除對,我已經添加了第二個訂單,以考慮到頻率你也使用了一個詞。但本質上貝絲回答了這個問題,所以我將其標記爲答案(非常感謝)
可以添加你想要什麼的例子嗎?給我們3項,關鍵字和足夠itemkeywords證明你想 – Beth 2010-10-19 15:47:15