2011-01-24 20 views
0

私が作っているウェブサイトは、検索ユーティリティを中心に展開されており、トップ10(または何か)の検索クエリをホームページに掲載したいと考えています。「トップクエリ」ページの作成方法

これを行う最も簡単で効率的な方法は何でしょうか?

SQLデータベースを使用するか、上位10個のクエリを含むテキストファイルと毎日データを消去するcronジョブを使用する必要がありますか?

また、2人のユーザーが同じものを検索し、そのうちの1つ、つまりマルチスレッドを記録するという問題を回避するにはどうすればよいですか?あなたは、データベースのバックエンドを使用する場合は

サイトのバックエンドは全てPythonで

答えて

2

クエリをテーブルに入れます。クエリは1つのクエリごとに1行、カウントする列は1つです。クエリが既に存在しない場合は挿入し、それ以外の場合はクエリ行カウンタをインクリメントします。

cronジョブをまとめて、深夜12時にテーブルを空にします。トランザクションを使用して、2つの異なる要求が衝突するのを防ぎます。

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; 

それともにクエリを投げることができるため、その場でそれを照会することができますパフォーマンス上の理由から、10項目のリストが決して変更されないため、静的ファイル(日付ごと)を生成するCRONジョブ。

監査の場合、昨日の静的なトップ10が作成された後で、テーブルエントリを保持することも、必要でない場合は、前日の空のデータだけを保持することもできます。

関連する問題