示例#1
0
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)
示例#2
0
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)