91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

基于Serverless快速實現簡單版查詢工具的示例分析

發布時間:2021-11-15 16:32:27 來源:億速云 閱讀:144 作者:柒染 欄目:云計算

這期內容當中小編將會給大家帶來有關基于Serverless快速實現簡單版查詢工具的示例分析,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

需求背景

朋友的單位,有一個小型的圖書室,圖書室中擺放了很多的書,每本書都被編號放在對應的區域,為了讓大家更快,更容易找到這些書,他聯系我,讓我幫他弄一個圖書查詢系統。可以通過用戶輸入,模糊匹配到對應的結果,并且提供書籍對應的地點。

功能設計

  • 讓朋友把書籍整理并存儲到一個Excel表格中;

  • 將Excel表放到對象存儲中,云函數讀取這個文件,并且解析;

  • 根據詞語的相似尋找相似的圖書;

  • 前端頁面通過MUI制作,放在對象存儲中,并且使用對象存儲的Website功能;

整體實現

數據形態

Excel樣式主要包括書名和編號,同時下面包括分類的tab:

基于Serverless快速實現簡單版查詢工具的示例分析

基于函數的搜索功能

核心代碼實現:

import jieba
import openpyxl
from gensim import corpora, models, similarities
from collections import defaultdict
import urllib.request

with 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.sheetnames
for 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 result


def main_handler(event, context):
    try:
        print(event)
        name = event["body"]
        print(name)
        base_html = '''<div class='mui-card'><div class='mui-card-header'>{{book_name}}</div><div class='mui-card-content'><div class='mui-card-content-inner'>分類:{{book_category}}<br>編號:{{book_number}}</div></div></div>'''
        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 '''<div class='mui-card' style='margin-top: 25px'><div class='mui-card-content'><div class='mui-card-content-inner'>未找到圖書信息,請您重新搜索。</div></div></div>'''

同時配置APIGW:

基于Serverless快速實現簡單版查詢工具的示例分析

功能頁面

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>圖書檢索系統</title>
    <meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">

    <link rel="stylesheet" href="https://others-1256773370.cos.ap-chengdu.myqcloud.com/booksearch/css/mui.min.css">
    <style>
        html,
        body {
            background-color: #efeff4;
        }
    </style>
    <script>
        function getResult() {
            var UTFTranslate = {
                Change: function (pValue) {
                    return pValue.replace(/[^\u0000-\u00FF]/g, function ($0) {
                        return escape($0).replace(/(%u)(\w{4})/gi, "&#x$2;")
                    });
                },
                ReChange: function (pValue) {
                    return unescape(pValue.replace(/&#x/g, '%u').replace(/\\u/g, '%u').replace(/;/g, ''));
                }
            };

            var xmlhttp;
            if (window.XMLHttpRequest) {
                // IE7+, Firefox, Chrome, Opera, Safari 瀏覽器執行代碼
                xmlhttp = new XMLHttpRequest();
            } else {
                // IE6, IE5 瀏覽器執行代碼
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            xmlhttp.onreadystatechange = function () {
                if (xmlhttp.readyState == 4 && xmlhttp.status == 200 && xmlhttp.responseText) {
                    document.getElementById("result").innerHTML = UTFTranslate.ReChange(xmlhttp.responseText).slice(1, -1).replace("\"",'"');
                }
            }
            xmlhttp.open("POST", "https://********", true);
            xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            xmlhttp.send(document.getElementById("book").value);
        }
    </script>
</head>
<body>
<div class="mui-content" >
    <h4 >圖書檢索系統</h4>
    <div class="mui-content-padded" >
        <div class="mui-input-row mui-search">
            <input type="search" class="mui-input-clear" placeholder="請輸入圖書名" id="book">
        </div>
        <div class="mui-button-row">
            <button type="button" class="mui-btn mui-btn-numbox-plus"  onclick="getResult()">檢索
            </button>&nbsp;&nbsp;
        </div>
    </div>
    <div id="result">
        <div class="mui-card" >
            <div class="mui-card-content">
                <div class="mui-card-content-inner">
                    可以在搜索框內輸入書籍的全稱,或者書籍的簡稱,系統支持智能檢索功能。
                </div>
            </div>
        </div>
    </div>
</div>
<script src="https://others-1256773370.cos.ap-chengdu.myqcloud.com/booksearch/js/mui.min.js"></script>
</body>
</html>

效果展示

為了便于朋友使用,將這個頁面用過Webview封裝成一個APP,整體效果如下:

基于Serverless快速實現簡單版查詢工具的示例分析

這個APP是一個低頻使用APP,可以這樣認為,如果做在一個傳統服務器上,這應該不是一個明智的選擇,云函數的按量付費,對象存儲與APIGW的融合,完美解決了資源浪費的問題,同時借用云函數的APIGW觸發器,很簡單輕松的替代傳統的Web框架和部分服務器軟件的安裝和使用、維護等。這個例子非常小,但是確是一個有趣的小工具,除了圖書查詢之外,還可以考慮做成成績查詢等。

上述就是小編為大家分享的基于Serverless快速實現簡單版查詢工具的示例分析了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

奈曼旗| 石河子市| 福建省| 民县| 湘西| 华宁县| 厦门市| 金平| 邵武市| 旬阳县| 安吉县| 松原市| 保靖县| 开远市| 台东县| 康保县| 桦南县| 沾化县| 东乡县| 台山市| 分宜县| 太仓市| 化德县| 卓资县| 遂川县| 南投县| 青神县| 延津县| 星座| 桐梓县| 襄樊市| 古交市| 伊吾县| 武陟县| 海原县| 定陶县| 泾川县| 磴口县| 滨州市| 阳西县| 云龙县|