我所做的一個網站圍繞着一個搜索實用程序展開,並希望在主頁上列出當天搜索量最大的10個(或某些)查詢。如何製作「熱門查詢」頁面
這樣做最簡單/最有效的方法是什麼?
我應該每天使用一個sql數據庫還是隻包含前10個查詢和一個cronjob擦除數據的文本文件?
另外,我將如何避免兩個用戶搜索同一個東西的問題,它只記錄其中的一個,即多線程?
該網站的後臺是全部用Python編寫的
我所做的一個網站圍繞着一個搜索實用程序展開,並希望在主頁上列出當天搜索量最大的10個(或某些)查詢。如何製作「熱門查詢」頁面
這樣做最簡單/最有效的方法是什麼?
我應該每天使用一個sql數據庫還是隻包含前10個查詢和一個cronjob擦除數據的文本文件?
另外,我將如何避免兩個用戶搜索同一個東西的問題,它只記錄其中的一個,即多線程?
該網站的後臺是全部用Python編寫的
將查詢放入表中,每個不同的查詢有一行,並且要計算一列。如果查詢不存在,則插入,否則將增加查詢行計數器。
將cron作業放在一起比在午夜12時清空表格。使用事務來防止兩個不同的請求發生衝突。
如果你使用一個數據庫後端,任何的Python框架和RDBMS組合將能夠處理的併發性,這應該是至少你的問題。
只要將完整的查詢搜索字符串(單詞?的組合)記錄到表中並在一天結束時使用簡單的聚合查詢來生成結果。
這樣一個簡單的表格會做(使用MySQL作爲一個例子)
query: id autonumber, search_time datetime, search_string varchar
可以查詢它在飛行前10
select date(search_time), search_string, count(*) times_searched
from query
group by date(search_time), search_string
order by 3 desc
limit 0,10;
或者你可以拋出查詢到由於性能方面的原因,CRON工作產生一個靜態文件(每日期),因爲10個項目的列表永遠不會改變。
對於審計,您可以保留表格條目,或者如果不是必需的話,只要前一天的數據爲空,那麼一旦產生了昨天的靜態前10名。