無(wú)論是展示型企業(yè)網(wǎng)站,還是支持在線(xiàn)支付的商城網(wǎng)站,是否有站內搜索功能將會(huì )影響到網(wǎng)站的用戶(hù)體驗,只有站內搜索功能的支撐,才有可能讓網(wǎng)站訪(fǎng)問(wèn)者迅速找到適合自己的產(chǎn)品或者服務(wù)。然而常規企業(yè)網(wǎng)站由于成本限制,只會(huì )實(shí)現一個(gè)欄目的搜索功能,但有的企業(yè)網(wǎng)站卻要全站搜索,而本文將為您簡(jiǎn)述全站搜索實(shí)現原理。
網(wǎng)站單個(gè)欄目的搜索實(shí)現原理
單個(gè)欄目的數據,在技術(shù)層面上,會(huì )把數據保存在同一張數據表中,就好像我們將所有的員工考勤記錄保存在Excel的一張工作表中的記錄是一樣的。當我們需要查找符合一定條件的記錄時(shí),只需要進(jìn)行簡(jiǎn)單的搜索即可。這個(gè)搜索動(dòng)作對應到網(wǎng)站數據庫的話(huà),也就是一組SQL查詢(xún)語(yǔ)句,我們技術(shù)同事會(huì )將查詢(xún)出來(lái)的結果放到數組變量中,最后通過(guò)循環(huán)的方式展現在網(wǎng)頁(yè)中。整體而言,這種單個(gè)欄目的搜索相對來(lái)說(shuō)比較容易實(shí)現。
全站搜索實(shí)現原理一
在我們理解了單個(gè)欄目的搜索實(shí)現原理之后,就可以很容易的理解全站搜索的實(shí)現原理 了。其實(shí)全站搜索就是相當于把單個(gè)欄目搜索操作對每一張需要被搜索的數據表都執行一次,每一張數據表理論上是對應一個(gè)數據表的。因此,需要搜索多少個(gè)表,就需要些多少組SQL查詢(xún)語(yǔ)句,然后將查詢(xún)出來(lái)的若干個(gè)結果分別保存到不同的數組變量中,再通過(guò)循環(huán)的方式展現在網(wǎng)頁(yè)中。由于搜索結果實(shí)際上是分組的,因此,我們可以非常靈活多變的為搜索結果頁(yè)設計不同的布局和展示方式。具體可以參考玉律網(wǎng)站建設公司創(chuàng )絡(luò )官網(wǎng)的搜索結果展示方式,如下圖所示:
全站搜索實(shí)現原理二
除了上面的這種全站搜索方式,我們還可以用其他方式來(lái)實(shí)現,例如:?jiǎn)为殑?chuàng )建一張索引表,用來(lái)存放對應的標題、內容(內容太多可能會(huì )影響效率或需要高性能服務(wù)器支持)和對應的鏈接地址。當網(wǎng)站管理員在網(wǎng)站后臺進(jìn)行添加、刪除數據時(shí),如果會(huì )影響到URL的形成,那么就需要同時(shí)更新這一張數據表的內容。不過(guò)我們并不是特別推薦這種方式,原理一的實(shí)現相對更加簡(jiǎn)單和高效,大家可以多多嘗試,找到適合自己網(wǎng)站的全站搜索方式。當然了,無(wú)論是哪種方式,當出現沒(méi)有搜索結果的時(shí)候,我們都應該展示推薦內容給用戶(hù)或操作指引。
全站搜索雖然會(huì )極大的提高網(wǎng)站用戶(hù)體驗,但是如果處理不當,會(huì )消耗過(guò)多的服務(wù)器資源,造成網(wǎng)站訪(fǎng)問(wèn)緩慢或者超時(shí),或者對服務(wù)器性能要求比較高一些。對于這一點(diǎn),就需要技術(shù)同事進(jìn)行相應的代碼優(yōu)化或者提高服務(wù)器性能,以平衡網(wǎng)站整體搜索效果。