iT邦幫忙

1

找出其他相似的文章?

假設文章有一個欄位叫做 tags 稱他標籤好了~
每一個文章都有類似的標籤,例如

id / blog_title / tags
1 / Hi / 台北,高雄,屏東
2 / 你好 / 台北,高雄
3 / 早安 / 屏東,彰化

我想要利用 tags 找出其他有跟這篇文章相似的文章
假設我現在在瀏覽 文章1 好了
下面會出現一個延伸閱讀,他會找到有跟他類似標籤的文章並顯示
所以他會顯示 文章2 跟 文章3
如果瀏覽 文章2 ,則只會顯示 文章1 為他的延伸閱讀
如果瀏覽 文章3 ,則只會顯示 文章1 為他的延伸閱讀

SELECT blog_title FROM `blog`
        WHERE tags LIKE '%{ ??? }%'
        LIMIT 3

我能用何種函數在 mysql 中,就能做到這種比對?

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

2
rogeryao
iT邦大師 1 級 ‧ 2018-10-21 23:54:05
最佳解答
SELECT id,blog_title FROM blog
        WHERE tags REGEXP (
        SELECT replace(tags,',','|') FROM blog
        where 1=1
        and id=1
        )
        and id <> 1

Demo

看更多先前的回應...收起先前的回應...
火爆浪子 iT邦研究生 1 級 ‧ 2018-10-22 13:15:33 檢舉

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'LIMIT 0, 25' at line 2

火爆浪子 iT邦研究生 1 級 ‧ 2018-10-22 13:18:49 檢舉

分析過程中發生 5 個錯誤。

無法辨識的關鍵字。 (near "RLIKE" at position 50)
無法辨識的關鍵字。 (near "CONCAT" at position 59)
預期之外的符號。 (near "(" at position 65)
預期之外的符號。 (near "'[[:<:]]'" at position 66)
預期之外的符號。 (near "," at position 75)

rogeryao iT邦大師 1 級 ‧ 2018-10-22 17:18:34 檢舉

上面的 SQL 指令沒有 "RLIKE" ,也沒有 "CONCAT"

火爆浪子 iT邦研究生 1 級 ‧ 2018-10-23 17:09:44 檢舉

貼錯

無法辨識的關鍵字。 (near "REGEXP" at position 43)
預期之外的符號。 (near "(" at position 50)

火爆浪子 iT邦研究生 1 級 ‧ 2018-10-23 17:14:01 檢舉

我想做到的是
文章用自己的標籤找到其他相似標籤的文章
我有用 foreach + while 實現,但是這樣文章數會變兩倍...所以不work

我要發表回答

立即登入回答