产业气象站|Serverless 快速实现简单版查询工具,基于

朋友的单位有一个小型的图书室 , 图书室中摆放了很多的书 , 每本书都被编号放在对应的区域 , 为了让大家更快、更容易找到这些书 , 他联系我 , 让我帮他弄一个图书查询系统 , 通过用户输入能模糊匹配到对应的结果 , 并且提供书籍对应的地点 。
功能设计
让朋友把书籍整理并存储到一个Excel表格中;
将Excel表放到对象存储中 , 云函数读取这个文件并解析;
根据词语的相似寻找相似的图书;
前端页面通过MUI制作 , 放在对象存储中 , 并且使用对象存储的Website功能;
整体实现
数据形态
Excel样式主要包括书名和编号 , 同时下面包括分类的tab:
产业气象站|Serverless 快速实现简单版查询工具,基于
文章图片
基于函数的搜索功能
核心代码实现:
importjiebaimportopenpyxlfromgensimimportcorpora,models,similaritiesfromcollectionsimportdefaultdictimporturllib.requestwithopen("/tmp/book.xlsx","wb")asf:f.write(urllib.request.urlopen("https://********").read())top_str="abcdefghijklmn"book_dict={}book_list=[]wb=openpyxl.load_workbook("/tmp/book.xlsx")sheets=wb.sheetnamesforeve_sheetinsheets:print(eve_sheet)sheet=wb.get_sheet_by_name(eve_sheet)this_book_name_index=Nonethis_book_number_index=Noneforeve_headerintop_str:ifsheet[eve_header][0].valuehttps://pcff.toutiao.jxnews.com.cn/p/20200629/=="书名":this_book_name_index=eve_headerifsheet[eve_header][0].valuehttps://pcff.toutiao.jxnews.com.cn/p/20200629/=="编号":this_book_number_index=eve_headerprint(this_book_name_index,this_book_number_index)ifthis_book_name_indexandthis_book_number_index:this_book_list_len=len(sheet[this_book_name_index])foriinrange(1,this_book_list_len):add_key="%s_%s_%s"%(sheet[this_book_name_index][i].value,eve_sheet,sheet[this_book_number_index][i].value)add_value=https://pcff.toutiao.jxnews.com.cn/p/20200629/{"category":eve_sheet,"name":sheet[this_book_name_index][i].value,"number":sheet[this_book_number_index][i].value}book_dict[add_key]=add_valuebook_list.append(add_key)defgetBookList(book,book_list):documents=[]foreve_sentenceinbook_list:tempData="".join(jieba.cut(eve_sentence))documents.append(tempData)texts=[[wordforwordindocument.split()]fordocumentindocuments]frequency=defaultdict(int)fortextintexts:forwordintext:frequency[word]+=1dictionary=corpora.Dictionary(texts)new_xs=dictionary.doc2bow(jieba.cut(book))corpus=[dictionary.doc2bow(text)fortextintexts]tfidf=models.TfidfModel(corpus)featurenum=len(dictionary.token2id.keys())sim=similarities.SparseMatrixSimilarity(tfidf[corpus],num_features=featurenum)[tfidf[new_xs]]book_result_list=[(sim[i],book_list[i])foriinrange(0,len(book_list))]book_result_list.sort(key=lambdax:x[0],reverse=True)result=[]foreveinbook_result_list:ifeve[0]&gt=0.25:result.append(eve)returnresultdefmain_handler(event,context):try:print(event)name=event["body"]print(name)base_html="""
【产业气象站|Serverless 快速实现简单版查询工具,基于】{{book_name}}