mui实现分享功能_基于 Serverless 快速实现简单版查询工具(文本相似度)

需求背景

朋友的单位,有一个小型的图书室,图书室中摆放了很多的书,每本书都被编号放在对应的区域,为了让大家更快,更容易找到这些书,他联系我,让我帮他弄一个图书查询系统。可以通过用户输入,模糊匹配到对应的结果,并且提供书籍对应的地点。

功能设计

  • 让朋友把书籍整理并存储到一个Excel表格中;
  • 将Excel表放到对象存储中,云函数读取这个文件,并且解析;
  • 根据词语的相似寻找相似的图书;
  • 前端页面通过MUI制作,放在对象存储中,并且使用对象存储的Website功能;

整体实现

数据形态

Excel样式主要包括书名和编号,同时下面包括分类的tab:

e05db29e2ebe465b55067d5322f92185.png

基于函数的搜索功能

核心代码实现:

import jiebaimport openpyxlfrom gensim import corpora, models, similaritiesfrom collections import defaultdictimport urllib.requestwith open("/tmp/book.xlsx", "wb") as f:    f.write(        urllib.request.urlopen("https://********").read()    )top_str = "abcdefghijklmn"book_dict = {}book_list = []wb = openpyxl.load_workbook('/tmp/book.xlsx')sheets = wb.sheetnamesfor eve_sheet in sheets:    print(eve_sheet)    sheet = wb.get_sheet_by_name(eve_sheet)    this_book_name_index = None    this_book_number_index = None    for eve_header in top_str:        if sheet[eve_header][0].value == "书名":            this_book_name_index = eve_header        if sheet[eve_header][0].value == "编号":            this_book_number_index = eve_header    print(this_book_name_index, this_book_number_index)    if this_book_name_index and this_book_number_index:        this_book_list_len = len(sheet[this_book_name_index])        for i in range(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 = {                "category": eve_sheet,                "name": sheet[this_book_name_index][i].value,                "number": sheet[this_book_number_index][i].value            }            book_dict[add_key] = add_value            book_list.append(add_key)def getBookList(book, book_list):    documents = []    for eve_sentence in book_list:        tempData = " ".join(jieba.cut(eve_sentence))        documents.append(tempData)    texts = [[word for word in document.split()] for document in documents]    frequency = defaultdict(int)    for text in texts:        for word in text:            frequency[word] += 1    dictionary = corpora.Dictionary(texts)    new_xs = dictionary.doc2bow(jieba.cut(book))    corpus = [dictionary.doc2bow(text) for text in texts]    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]) for i in range(0, len(book_list))]    book_result_list.sort(key=lambda x: x[0], reverse=True)    result = []    for eve in book_result_list:        if eve[0] >= 0.25:            result.append(eve)    return resultdef main_handler(event, context):    try:        print(event)        name = event["body"]        print(name)        base_html = '''
{{book_name}}
分类:{{book_category}}
编号:{{book_number}}
''' result_str = "" for eve_book in getBookList(name, book_list): book_infor = book_dict[eve_book[1]] result_str = result_str + base_html.replace("{{book_name}}", book_infor['name']) .replace("{{book_category}}", book_infor['category']) .replace("{{book_number}}", book_infor['number'] if book_infor['number'] else "") if result_str: return result_str except Exception as e: print(e) return '''
未找到图书信息,请您重新搜索。
'''

同时配置APIGW:

140c302905b021ba88df8906b648bbab.png

功能页面

    图书检索系统

图书检索系统

检索
可以在搜索框内输入书籍的全称,或者书籍的简称,系统支持智能检索功能。

效果展示

为了便于朋友使用,将这个页面用过Webview封装成一个APP,整体效果如下:

3edee749e6daf4d4aa8788457afda697.png

总结

这个APP是一个低频使用APP,可以这样认为,如果做在一个传统服务器上,这应该不是一个明智的选择,云函数的按量付费,对象存储与APIGW的融合,完美解决了资源浪费的问题,同时借用云函数的APIGW触发器,很简单轻松的替代传统的Web框架和部分服务器软件的安装和使用、维护等。这个例子非常小,但是确是一个有趣的小工具,除了图书查询之外,还可以考虑做成成绩查询等。

Serverless Framework 试用计划

我们诚邀您来体验最便捷的 Serverless 开发和部署方式。在试用期内,相关联的产品及服务均提供免费资源和专业的技术支持,帮助您的业务快速、便捷地实现 Serverless!

Serverless 极速部署,只需三步

Serverless Framework 是构建和运维 Serverless 应用的框架。简单三步,即可通过 Serverless Framework 快速实现服务部署。

1. 安装 Serverless

macOS/Linux 系统:推荐使用二进制安装

$ curl -o- -L https://slss.io/install | bash

Windows 系统:可通过 npm 安装

$ npm install -g serverless

2. 创建云上应用

在空文件夹下输入 `serverless` 命令

$ serverless

访问命令行中输出的链接,即可访问成功部署后的应用。

3. 查看部署信息

进入到部署成功的文件夹,运行如下命令,查看部署状态和资源信息:

$ sls info
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值