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) } )