2011-01-24 75 views
0

我所做的一個網站圍繞着一個搜索實用程序展開,並希望在主頁上列出當天搜索量最大的10個(或某些)查詢。如何製作「熱門查詢」頁面

這樣做最簡單/最有效的方法是什麼?

我應該每天使用一個sql數據庫還是隻包含前10個查詢和一個cronjob擦除數據的文本文件?

另外,我將如何避免兩個用戶搜索同一個東西的問題,它只記錄其中的一個,即多線程?

該網站的後臺是全部用Python編寫的

回答

2

將查詢放入表中,每個不同的查詢有一行,並且要計算一列。如果查詢不存在,則插入,否則將增加查詢行計數器。

將cron作業放在一起比在午夜12時清空表格。使用事務來防止兩個不同的請求發生衝突。

0

如果你使用一個數據庫後端,任何的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名。