簡體   English   中英

如何按相似度對與關鍵字匹配的項目進行排名

[英]How to rank items that match keywords by similarity

我有一個鏈接到關鍵字表的項目表。 我想列出所有共享關鍵字的項目,並希望對結果進行排名,以便最相似的項目出現在最高位置。 因此,我認為與所有關鍵字匹配的項目將排在最高位置,而僅與一個關鍵字匹配的項目在列表中排在后面。

如果項目與相同數量的關鍵字匹配,則我想按關鍵字的頻率對結果進行排名,以便共享不尋常關鍵字的項目看起來比共享頻繁出現的關鍵字的項目更高。

目前,我的架構是這樣的(但是如果需要可以更改):

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以消除對,並添加了第二項也要考慮到單詞使用的頻率。 但本質上,貝絲回答了這個問題,所以我將其標記為答案(非常感謝)

Select keywordID, count(itemID) as cnt_item
from itemKeywords
group by keywordID
order by count(itemID) desc

確定,更好地了解您不想要的內容,請嘗試在itemID不匹配的keywordID字段上加入itemKeyword表的2個實例:

select ik.itemID, ik1.itemID as itemID1, ik.keywordID
from itemkeyword ik inner join itemkeyword ik1 on ik.keywordID = ik1.keywordID
where ik.itemID <> ik1.itemID

然后,使用該設置,計算keywordID的數量,並以降序返回列表:

select itemID, itemID1, count(keywordID) as count_kwd
from 
(    select ik.itemID, ik1.itemID as itemID1, ik.keywordID
    from itemkeyword ik inner join itemkeyword ik1 on ik.keywordID = ik1.keywordID
    where ik.itemID <> ik1.itemID
) t
group by itemID, itemID1
order by count(keywordID) desc

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM