コード例 #1
0
ファイル: search_controller.py プロジェクト: 764664/BioSE
    def search(args):
        keyword = args.get('keyword')

        # Store history in database
        if SearchItem.objects(keyword=keyword).count() == 0:
            search_item = SearchItem(keyword=keyword)
        else:
            search_item = SearchItem.objects(keyword=keyword).get()
        search_item.count += 1
        search_item.save()

        # Load cache
        # search_results = g.get('search_results', None)
        # if search_results is None:
        #     g.search_results = {}
        #     search_results = g.search_results
        #
        # search_id_to_results = g.get('search_id_to_results', None)
        # if search_id_to_results is None:
        #     g.search_id_to_results = {}
        #     search_id_to_results = g.search_id_to_results

        query_result = PaperProcessor(keyword)
        papers = query_result.papers_array

        # paper_ids = [x["DBID"] for x in papers]
        # search_item.update(add_to_set__papers=paper_ids)

        if flask_login.current_user.is_authenticated:
            search_history = SearchHistory(item=search_item,
                                           user=User.objects(id=flask_login.current_user.id).get(),
                                           papers=[x for x in query_result.papers_array])
        else:
            search_history = SearchHistory(item=search_item,
                                           papers=[x for x in query_result.papers_array])
        search_history.save()

        # # Word bag
        # bag = AbstractProcessor().process_list(return_list)
        # words = [[y, bag[y]] for y in sorted(list(bag.keys()), key=lambda x: bag[x], reverse=True)[:30]]

        # Return result
        return jsonify(
            response=str(search_history.id),
            meta_info={
                'page_count': math.ceil(len(papers)/RESULTS_PER_PAGE)
            }
        )