Home > 記事 > Python > 【Python】キーワードのランキングチェックツールの改修

記事

【Python】キーワードのランキングチェックツールの改修

ゴールデンウィーク中にpythonで作成した検索キーワードのランキングチェックツールですが、以下の改修を加えることにしました。

  1. 検索サイトに負荷をかけないように次のページにゆくまでに1秒のウェイトをいれる
  2. 検索キーワードの順列でマスタを生成し同じ条件で検索したときに追跡できるようにする

 

1. 設計の変更

1.1 ER図

1.1.1 変更前

変更前のER図

検索ごとにT_SEARCH(検索)のレコードが作成されT_SEARCH(検索テーブル)に対するキーワードがT_KEYWORK(キーワードテーブル)に登録されていました。

1.1.2 変更後

変更後のER図

検索キーワードで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カラムに格納します。

1.2 テーブル定義

T_SERCH_M(検索マスタ)
項目名 制約 説明
id int PK 検索マスタID
keywords text   キーワードのtab区切り
T_SEARCH(検索)
項目名 制約 説明
id int PK サーチID
search_m_id int   検索マスタID(項目追加)
search_datetime int   検索日時
T_KEYWORD(キーワード)
項目名 制約 説明
id int PK キーワードID
search_id int FK 外部キー
keyword text   キーワード文字列

1.3 シーケンス図

参考までにシーケンス図は以下の通りとなります。
変更後のシーケンス図

2. 実装

検索開始のメソッドから次項検索を呼び出す前、次項検索から次項検索を呼び出す前に1秒のウェイトをいれました。

シーケンス図のとのり検索処理の最初に検索マスタにレコードの存在確認と登録をおこないにゆきます。キーワードテーブルへの処理はすべて削除しています。
詳しくはGitHub上のソースコードを参照してください。
 

Comment on this article

コメントはまだありません。

Send comments

必須
必須  
※ メールアドレスは公開されません
任意
必須
Loading...  Please enter the letters of the image