def main(subject): # 読み込み posts = {} for posted in dat_reader(subject.dat_url): posts[posted.num] = posted # 読み込み後のパースとエラー排除とレスによる重み付け posts = analyze_post(posts) # キーワード解析 r_indexes = analyze_keyword(posts) # postsにキーワード解析内容を反映したあと、keywordデータをDBに一括登録 insert_keyword(posts, r_indexes, subject.site.id) # 評価高い投稿を出力 pages = [] for key in posts: output = PageRepository(_type=PageType.POST_RANK.value) if posts[key].priority > 300: # 評価の高い投稿を出力 print("++++++++++++++++++++") print(posts[key].priority) print("++++++++++++++++++++") posts[key].printer(posts=posts, output=output) # DB出力用に記録 pages.append(output) # キーワード評価が高い投稿を出力 for r_index in r_indexes: pages.append(printer_res(r_index, posts)) # dbに記録するレコードの生成 pages = filter_overlap(pages) keyword_record_dict = { r_index.keyword: r_index.keyword_record for r_index in r_indexes } bulk_pages = [ page.output_for_page(subject, keyword_record_dict) for page in pages if page.is_enable ] # バルク! pages = Page.bulk_insert(bulk_pages) PageKeywordRelation.register(pages) # 公開日を最適に設定する set_start_at(pages)
def main(subject): # 読み込み posts = {} for posted in dat_reader(subject.dat_url): posts[posted.num] = posted # 読み込み後のパースとエラー排除とレスによる重み付け posts = analyze_post(posts) # キーワード解析 r_indexes = analyze_keyword(posts) # postsにキーワード解析内容を反映したあと、keywordデータをDBに一括登録 insert_keyword(posts, r_indexes, subject.site.id) # 評価高い投稿を出力 pages = [] for key in posts: output = PageRepository(_type=PageType.POST_RANK.value) if posts[key].priority > 300: # 評価の高い投稿を出力 print("++++++++++++++++++++") print(posts[key].priority) print("++++++++++++++++++++") posts[key].printer(posts=posts, output=output) # DB出力用に記録 pages.append(output) # キーワード評価が高い投稿を出力 for r_index in r_indexes: pages.append(printer_res(r_index, posts)) # dbに記録するレコードの生成 pages = filter_overlap(pages) keyword_record_dict = {r_index.keyword: r_index.keyword_record for r_index in r_indexes} bulk_pages = [page.output_for_page(subject, keyword_record_dict) for page in pages if page.is_enable] # バルク! pages = Page.bulk_insert(bulk_pages) PageKeywordRelation.register(pages) # 公開日を最適に設定する set_start_at(pages)
def run(self): # PageKeywordRelationに1行でもレコードあれば実行しない if PageKeywordRelation.objects().filter().count() > 0: raise AssertionError("PageKeywordRelation data is exist") # pageとkeywordのデータ全取得 page_all = Page.get_all() page_all = sorted(page_all, key=lambda x: x.id) # 10ページずつbulk count = 0 pages = [] for page in page_all: pages.append(page) count += 1 if len(pages) > 10: PageKeywordRelation.register(pages) pages = [] print("{}/{}".format(count, len(page_all))) PageKeywordRelation.register(pages)