我有一個藝術網站。我現在需要展示相關的藝術作品。我有3個表:多對多關係標籤匹配?
art_info : art_id, title
art_tag_relationship : art_id, tag_id
art_tags : tag_id, tag (in text)
我試圖讓相關技術通過最相關的標籤匹配排序的給定的一件藝術品。
所以現在可以說我有5個藝術品與標籤
藝術#1標籤:紅色,藍色,綠色,黃色
藝術#2標籤:紅色,橙色,紫色,黑色,黃色,藍色
藝術#3標籤:紅
藝術#4標籤:藍色,綠色
藝術#5標籤:白色,棕色
所以現在我想獲得最相關的藝術作品,以藝術#1的順序最匹配到最少匹配。我希望得到這樣的
相關技術,以#1的結果:
- 最佳匹配=藝術#2(因爲它匹配的3個標籤)
- 第二節比賽=藝術#4(因爲它匹配2個標籤)
- 第3場比賽=第3場比賽(因爲它匹配了1個標記)
- 不顯示第5場比賽,因爲沒有找到比賽。
我正在考慮使用foreach語句,一旦我得到藝術#1的標籤,但這似乎效率低下。
這裏是我用來獲取藝術#標籤1
SELECT art_info.art_id, art_info.title
FROM art_info
INNER JOIN art_tag_relationship ON art_info.art_id = art_tag_relationship.art_id
WHERE art_tag_relationship.art_id = '1'
所以現在查詢一次我從藝術#1的4個標籤,我如何才能擁有最最藝術相關標籤?
謝謝你的時間和使用大腦。
編輯:概念似乎是,通過art_tag_relationship - > art_tags獲取art#tag的標籤,然後從art_tag_relationships獲取art_id,其中tag_id與art_tag_relationships中art_id#1的找到標籤相同。
工程就像一個魅力。絕對美麗的謝謝你!我從來沒有見過使用過的<>。我會更多地閱讀這個。再次感謝! – Darius
@Darius「<>」表示不等於。 – Johan
嘿約翰,我有點過激,它似乎在工作,但是當我測試它時,結果發現它計算了與匹配標籤完全不同的東西。我用4個標籤搜索了一個art_id,它給了我9的相關性。我不明白它在這個點上的計數是什麼,因爲具有最高相關性的藝術沒有與我比較的藝術相同的標籤。有任何想法嗎?我懷疑它做的次數是多少張藝術照片使用同一個標籤的次數,但不包括它製作的匹配數量。 – Darius