ゴールデンウィーク中にpythonで作成した検索キーワードのランキングチェックツールですが、以下の改修を加えることにしました。
- 検索サイトに負荷をかけないように次のページにゆくまでに1秒のウェイトをいれる
- 検索キーワードの順列でマスタを生成し同じ条件で検索したときに追跡できるようにする
ゴールデンウィーク中にpythonで作成した検索キーワードのランキングチェックツールですが、以下の改修を加えることにしました。
検索ごとにT_SEARCH(検索)のレコードが作成されT_SEARCH(検索テーブル)に対するキーワードがT_KEYWORK(キーワードテーブル)に登録されていました。
検索キーワードでT_SERACH_M(検索マスタ)を検索し、過去に存在しない配列の検索キーワードの場合、T_SEARCH_M(検索マスタ)に検索マスタとして登録し、T_SEARCH(検索テーブル)とsearch_m_idで結合します。過去に存在する検索キーワードの配列の場合、T_SEARCH_M(検索マスタ)への登録はおこないません。
T_SEARCH(検索テーブル)に登録時はT_SEARCH_M(検索マスタ)のidであるsearch_m_idを一緒に登録することで、T_SEARCH_M(検索マスタ)経由で検索キーワードを取得できるようにします。
この変更により検索キーワードの配列を軸としたページランキング順位の追跡が可能になります。
モデル的にはT_KEYWORD(検索キーワードテーブル)を残して、T_SEARCH_Mと結合させるのが正しいのですが、検索順位ではキーワードの順番に意味があることと、SQL実行速度、ロジックの簡略化の観点からあえて正規化を崩した設計としました。キーワードの配列はタブ区切りで1カラムに格納します。
項目名 | 型 | 制約 | 説明 |
---|---|---|---|
id | int | PK | 検索マスタID |
keywords | text | キーワードのtab区切り |
項目名 | 型 | 制約 | 説明 |
---|---|---|---|
id | int | PK | サーチID |
search_m_id | int | 検索マスタID(項目追加) | |
search_datetime | int | 検索日時 |
検索開始のメソッドから次項検索を呼び出す前、次項検索から次項検索を呼び出す前に1秒のウェイトをいれました。
シーケンス図のとのり検索処理の最初に検索マスタにレコードの存在確認と登録をおこないにゆきます。キーワードテーブルへの処理はすべて削除しています。
詳しくはGitHub上のソースコードを参照してください。
Comment on this article
コメントはまだありません。
Send comments