怎樣設計訂閱系統?是靠關鍵詞搜尋標題的那種,這種需要搜尋引擎嗎?還是有什麼其他方法?

來源:互聯網
上載者:User
關鍵字 php mongodb mysql node.js java
如題,怎樣設計訂閱系統,是那種靠關鍵詞區分,比如訂閱"小三"新聞標題包含"小三"都給弄出來,再訂閱"蘋果"然後也把標題包含蘋果的給弄出來...如此可能還要設計排除某些字,

如果用資料庫LIKE的話資源肯定耗很大,想問成熟額做法是怎麼弄的?又是如何將不同結果,發布給不同訂閱者的?

回複內容:

如題,怎樣設計訂閱系統,是那種靠關鍵詞區分,比如訂閱"小三"新聞標題包含"小三"都給弄出來,再訂閱"蘋果"然後也把標題包含蘋果的給弄出來...如此可能還要設計排除某些字,

如果用資料庫LIKE的話資源肯定耗很大,想問成熟額做法是怎麼弄的?又是如何將不同結果,發布給不同訂閱者的?

請題主先詳細描述一下問題

  • 這些新聞的來源是什嗎?UGC?抓取?

  • 這些新聞有多大量?百萬?千萬?

以抓取資訊、新聞、千萬量級為例,大概分為一下幾部分:
1.抓取到的新聞會有分類別模組給每個條目打上標籤後入庫
2.為了存取速度,在記憶體中維護一個標籤-新聞唯一ID數組的資料結構,可以使用redis也可以單獨寫一個服務
3.會有一張表維護使用者和訂閱話題
4.當使用者發送了擷取訊息請求時,去記憶體中根據請求的話題詞去記憶體取得最新的幾條新聞ID,根據ID去資料庫取新聞返回,抗並發在資料庫上加一層緩衝

如果是搜尋引擎的話就是記憶體中維護著一張倒排索引表,每個新聞在入庫之前都會清洗資料、切詞存入該表中,之後使用者查詢關鍵詞就會根據該表中的索引找到具體的若干條目返回

以上

Kafka 系統啊, 發布&訂閱的訊息系統

可以考慮用 Elasticsearch

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.