這是關於使用(關係數據庫)設計全文搜索的系統架構問題。我使用的特定軟件是Solr和PostgreSQL,僅供參考。搜索和數據庫設計
假設我們正在建設有兩個用戶安迪和貝蒂的論壇 -
Post ID | User | Title | Content
--------|-------|-------------------|---------------------------
1 | Andy | Dark Knight rocks | Dark Knight rocks blah
2 | Betty | I love Twilight | Twilight blah blah
3 | Andy | Twilight sucks | Twilight sucks blah
4 | Betty | Andy sucks | Twilight rocks, Andy sucks
當職位表中的Solr進行索引,我們可以輕鬆地返回通過相關性排序,以」崗位Q =暮光之城「或」?q =黑暗+夜晚「。
現在我們想添加一個新功能來搜索用戶而不是帖子。一個簡單的實現只需索引用戶名並將「Andy」返回爲「?q = a」和「Betty」爲「?q = b」,但如果我們想讓我們的系統更智能以考慮用戶因爲貝蒂比安迪更多地提到暮光之城,所以將「貝蒂」之前「安迪」改回「?q =暮光之城」。
您將如何設計系統以高效處理數十萬用戶和數百萬帖子的用戶搜索功能?
感謝您的建議,但在面向用戶時應該面向哪些字段? – Jerry
當然,在文檔中您需要一個'user'字段來面向。它也應該是'string'類型。 – aitchnyu