java搜索引擎框架 java編寫(xiě)的程序,搜索框如何實(shí)現(xiàn)搜索功能?
java編寫(xiě)的程序,搜索框如何實(shí)現(xiàn)搜索功能?如果是用JAVA做的WEB項(xiàng)目,通常情況下都是通過(guò)前臺(tái)提交需要搜索的內(nèi)容,然后后臺(tái)接收,然后向數(shù)據(jù)庫(kù)發(fā)送SQL語(yǔ)句進(jìn)行查找相關(guān)內(nèi)容,然后后臺(tái)接收到數(shù)據(jù)庫(kù)返回
java編寫(xiě)的程序,搜索框如何實(shí)現(xiàn)搜索功能?
如果是用JAVA做的WEB項(xiàng)目,通常情況下都是通過(guò)前臺(tái)提交需要搜索的內(nèi)容,然后后臺(tái)接收,然后向數(shù)據(jù)庫(kù)發(fā)送SQL語(yǔ)句進(jìn)行查找相關(guān)內(nèi)容,然后后臺(tái)接收到數(shù)據(jù)庫(kù)返回的內(nèi)容,之后后臺(tái)再返回至前臺(tái),最后通過(guò)JS或者JQ相關(guān)的框架進(jìn)行渲染至界面。
一般我在工作中編寫(xiě)這樣的搜索功能的流程基本上就是先在前端給一個(gè)文本框,然后通過(guò)JQ去獲取到文本框的值,通過(guò)AJAX請(qǐng)求后臺(tái),JAVA在Controller層中接收到請(qǐng)求并獲取請(qǐng)求中的值,之后在JAVA在調(diào)用service層,service層調(diào)用dao層,再通過(guò)dao層關(guān)聯(lián)XML中的SQL語(yǔ)句并向數(shù)據(jù)庫(kù)發(fā)送SQL語(yǔ)句,當(dāng)然在發(fā)送SQL語(yǔ)句的同時(shí)是已經(jīng)把從文本框接收到的值一起拼接到了SQL語(yǔ)句中,然后數(shù)據(jù)庫(kù)會(huì)返回相對(duì)應(yīng)的值,之后就是之前的流程反過(guò)來(lái)執(zhí)行一遍dao層返回service層,再到Controller層并返回至頁(yè)面中,然后通過(guò)相關(guān)的框架把返回的值渲染至頁(yè)面,這就是一個(gè)很簡(jiǎn)單的JAVA程序的搜索功能。
當(dāng)然這也是在寫(xiě)JAVA程序中做的比較多的需求了。
微信搜索的搜索框?yàn)槭裁床挥涗浰阉饔涗洠?/h2>
微信是一個(gè)主要以封閉的社區(qū)為主的社交工具,而它的搜索功能主要包含了:朋友圈、文章、公眾號(hào)、小說(shuō)、音樂(lè)、表情等6大類(lèi),實(shí)際上可以分為兩類(lèi),一是用戶(hù)內(nèi)部資源搜索,二是用戶(hù)外部資源搜索。
首先,微信是以熟人圈為主,另外搜索出的結(jié)果排序依次是群聊、聊天記錄、收藏、搜一搜,因此可以看出,內(nèi)部資源搜索的側(cè)重比外部資源搜索大,所以微信團(tuán)隊(duì)為了解決微信自身信息過(guò)多而造成的信息冗余,這個(gè)很容易理解。
其次,微信的搜索框?yàn)槭裁床挥涗浰阉饔涗?,牛哥認(rèn)為微信本身可以當(dāng)成一個(gè)工具APP,平時(shí)看到自己感興趣的東西,都可以收藏起來(lái),下次想看的時(shí)候,直接從收藏調(diào)出,所以從這個(gè)角度來(lái)開(kāi),用戶(hù)產(chǎn)生二次搜索的概率就變低了,搜索框的記錄就顯得多余。
另外,微信定位的核心是通訊和社交兩大模塊,就如第一點(diǎn)所說(shuō)的是主打熟人網(wǎng)絡(luò),用戶(hù)在微信使用搜索的場(chǎng)景極大程度是找到自身在社交過(guò)程中產(chǎn)生的聯(lián)系人與內(nèi)容而已。微信給眾人的影響就是圈子,搜索外部資源的場(chǎng)景在微信里面顯得而外的別扭。
因此,牛哥覺(jué)得不記錄搜索記錄,為用戶(hù)提供一個(gè)更為簡(jiǎn)潔明了的界面,還不給用戶(hù)造成必要的疑惑,這點(diǎn)比較贊。加上張老板這種只做有用的,不做冗余的極致產(chǎn)品設(shè)計(jì)理念,相信微信團(tuán)隊(duì)也是通過(guò)用戶(hù)搜索同一關(guān)鍵詞這一行為的數(shù)據(jù)來(lái)決定不加歷史搜索記錄的。