elasticsearch keyword 分詞查詢 java如何實現(xiàn)搜索功能?
java如何實現(xiàn)搜索功能?Javaweb實現(xiàn)一個都很很簡單關(guān)鍵字搜索功能,完整的流程大概是這么大幾個流程:我拿一個簡單點電商系統(tǒng)來舉例說明。1.前臺頁面馬上準備幾個輸入框和搜索按鈕比如用訂單編號作為關(guān)
java如何實現(xiàn)搜索功能?
Javaweb實現(xiàn)一個都很很簡單關(guān)鍵字搜索功能,完整的流程大概是這么大幾個流程:
我拿一個簡單點電商系統(tǒng)來舉例說明。
1.前臺頁面馬上準備幾個輸入框和搜索按鈕
比如用訂單編號作為關(guān)鍵字并且模糊搜索,接下來的事情看html頁面的編碼
點擊網(wǎng)站查詢按鈕,收得到用戶然后輸入的信息后(校驗工作省略)form表單再提交
這里要用了前端的jQuery,其中url應(yīng)該是我們要跪請的后臺方法地址(這里是相對于地址),
我來看下后臺controller控制器代碼
后臺收不到前臺post提交回來的參數(shù)后,封裝到一個hashmap中,作為一個形參傳出service服務(wù)層
Service的實現(xiàn)類是這樣的
Service實現(xiàn)類中認可到這個hashmap后,動態(tài)鏈接庫dao層的selectByMap接口,而這個dao層是我們他所的數(shù)據(jù)不能訪問層,他是真接與數(shù)據(jù)庫通過交互的。
這是dao接口不對應(yīng)的mapper文件,其中定義有id是selectByMap的sql語句。后來訂單編號用want關(guān)鍵字充當where語句的查詢條件之一進行查詢。
dao層之后講從數(shù)據(jù)庫網(wǎng)上查詢到的結(jié)果前往給service層,service再直接返回給controller,結(jié)果將數(shù)據(jù)呈給html,瀏覽器軟件渲染html呈現(xiàn)出給我們。
這是搜索的大概流程了,而篇幅不大我說的也還沒有這樣的話透測,旨在推廣給大家更接地氣兒更很容易解釋的的介紹。如對Java有興趣大家也可以私聊我,詳細可以介紹。
多謝了大牛們求批評指導,謝謝!
假如從功能上講的話,我們較常見的那是從頁面上然后輸入關(guān)鍵字點擊直接搜索出去一串列表數(shù)據(jù),諸如百度。整個流程是頁面輸入輸入關(guān)鍵字-dstrok訊息傳遞到后臺服務(wù)端-a8服務(wù)端從db中資源數(shù)據(jù),之后原路可以展示給用戶,一個最簡單搜索功能即利用。
只不過假如后面做的更奇怪,伴隨著用戶數(shù)的增多,數(shù)據(jù)量的增大,頻繁的搜索會減小web應(yīng)用或db的壓力,后面考慮到區(qū)分緩存,分頁。但后期想做的更智能,我們這個可以在用lucene全文搜索引擎,實現(xiàn)lucene的應(yīng)用有solr,elasticsearch等。再到后面,我們會判斷到智能分詞,這里會涉及到nlp。再到后面我們也可以依據(jù)什么用戶然后輸入的關(guān)鍵字我推薦給用戶相同的商品或數(shù)據(jù),這里判斷使用aihadoop分析用戶喜歡的東西,然后再推薦給用戶
es數(shù)據(jù)庫是什么?
ElasticSearch西安北方光電有限公司ES,是個高拓展資源和開源的全文搜索和分析引擎,可以不準動態(tài)實時地存儲文件、搜索、分析海量的數(shù)據(jù)。
它和MongoDB、redis等完全不一樣是非關(guān)系型數(shù)據(jù)。
應(yīng)用定位:區(qū)分RestfulAPI標準的可擴展和高可用的實時數(shù)據(jù)分析的全文搜索工具。
可拓展:開源軟件,允許很多第三方插件。
高可用:在一個集群的多個節(jié)點中通過分布式存儲,索引允許shards和不能復(fù)制,就算部分節(jié)點down掉,也能手動通過數(shù)據(jù)恢復(fù)和主從切換。