站內搜索,如何讓我們找到想要的信息?

0 評論 3904 瀏覽 20 收藏 20 分鐘

互聯網信息技術,極大地擴寬了人類的信息獲取半徑。我們每天都在使用著各種各樣的搜索功能,在微信、小紅書、手機系統(tǒng)里,我們都在“搜索”。那么,搜索到底是一個怎樣的技術呢?它是如何讓我們快速找到想要的信息的呢?本文作者對站內搜索功能進行了分析,一起來看一下吧。

搜索技術,無論是對個人,還是對企業(yè),都是非常重要的技術。

互聯網信息技術,對于人類來說,最本質的改變在于,極大地擴大了人類的信息獲取半徑。

2017 年,IDC 發(fā)布的《數據時代 2025》白皮書中,就提到了互聯網中的信息總量,到 2025 年,將大財 160 億ZB,按照全球的網民按照 50 億人計算,意味著每個人將被分配到 3.2 ZB 的信息量。這樣的信息量,是在互聯網之前的時代,在靠書本和語言傳播信息的年代無法想象的。

面對海量的信息,如何找到我們所要的信息,是在互聯網時代必備的技能之一。而搜索技術,就是這樣一把利器,讓用戶更快地找到自己想要的內容。

回顧互聯網的發(fā)展歷程,起初新浪,網易等各大門戶網站是用戶瀏覽的主要站點。但很快,隨著互聯網信息的增長,門戶分類的方式已經無法滿足用戶尋找信息的需求。接下來的故事,大家也就知道了,像 Google、百度這樣的公司,依靠搜索引擎技術,找到了新的商業(yè)變現模式——“關鍵詞廣告”,成為了 PC 互聯網時代的王者。

我們每天都在使用著各種各樣的搜索功能,在微信里,在小紅書里,在手機系統(tǒng)里,在瀏覽器里,我們都在“搜索”。

那么搜索到底是一個怎樣的技術呢?

它是怎樣做到讓我們如此之快地找到想要的信息的呢?

一、搜索

搜索功能,本質上都是在數據庫里進行檢索。

比如,在一個人才數據庫中,高啟強的數據是:

可以理解為,在一份紙質表格里找數據。例如現在在一個 20 行 6 列的表格里,我們有找到高啟強的信息,那么只要從第 1 行到第 20 行,每行 5 個數據局都過一遍,直到高啟強。這就是搜索。

這樣的搜索方式在數據庫量級不大的情況下是可行的,但如果數據量上升,達到 2000 萬行,那原來的方式,就行不通了。所以就需要使用更高效的搜索,也就是通過建造[[索引]]的方式來提高搜索速度,例如,京海市的人才庫里有 2000 萬人,如果我先找到姓“高”的人才,再從高姓人才中查找高啟強,速度則會快很多。

在 Elasticsearch 中,使用到的“倒排索引”技術來提高搜索的有效性和可用性。

例如 ES 會為高啟強建立這樣的索引:

  • 38 歲 ~ 高啟強
  • 魚販 ~ 高啟強
  • 京海市 ~ 高啟強

這樣,我在搜索京海市的魚販時,也可以搜索到高啟強,提高了搜索的有效性和準確性。

image-20230226115140275

(倒排索引示意圖,圖片來源于網絡)

二、全網搜索 vs 站內搜索

上面講到,搜索本質上都是在自己的數據庫中檢索,那么根據一般根據搜索的范圍劃分,我們可以將搜索技術分為全網搜索和站內搜索

  • 全網搜索,如 google,百度
  • 站內搜索,如 淘寶、微信里的搜索

兩者的區(qū)別在于,全網搜索需要檢索全網的內容,所以搜索引擎需要利用爬蟲技術,爬取網頁的資料,整合到自己的數據庫中,才能被用戶搜到。例如 google 的 spider 爬蟲機器人,就會定期爬取全網的所有頁面,收錄到 google 的系統(tǒng)中。只有被收錄的網頁,才能夠在 google 搜索到。

而站內搜索,因為搜索的內容都是自己的,所以更重要的是怎樣將內容更好地組織好,放到搜索引擎中,讓用戶更快搜索到。舉一個大家日常都在使用的例子 —— 微信搜索:微信就將自己的搜索結果分為聊天記錄、聯系人、文章、表情、百科……等等不同的分類,讓用戶更快地找到想搜的內容。

三、點擊搜索后,發(fā)生了什么?

由于個人的工作經歷相關,之前在一個電商平臺中負責搜索相關的需求。所以今天我們主要來聊聊站內搜索功能。

一切搜索的行為,是從用戶輸入一個搜索詞開始的。當我們在搜索框中輸入一個詞,點擊搜索后,發(fā)生了什么?

我畫了一張搜索功能的圖景:從一個關鍵詞開始,搜索服務會怎么處理,最終返回搜索結果,如下:

搜索圖景

接下來就分為一個部分來簡單講講搜索服務的流程。

1. 文本分析器

當收到一個“搜索詞”后,并不能馬上發(fā)起搜索,而是要經過文本分析和處理,再使用處理過后的文本發(fā)起搜索。

文本分析其

1)分詞

用戶在輸入框中,輸入的可能是一個句子,可能是一個短語,可能是一個詞。用戶的意圖是多樣的。這就是需要我們對用戶輸入的詞語進行分詞和理解。

例如用戶輸入的搜索詞是“珠江新城咖啡廳”,這樣的詞語,經過分詞算法的處理,可能會識別出以下幾個搜索詞“珠江”,“珠江新城”,“咖啡”和“咖啡廳”。

分詞算法,使用自然語義識別 (NLP)和詞頻分析等技術,比較復雜。對小公司而言,可以使用一些開源的分詞技術。大公司可能會根據自己的業(yè)務對分詞算法進行優(yōu)化,例如美團技術團隊的文章中《美團搜索中 NER 技術的探索欲實踐》就提到了:在進行實體字典匹配前引入了CRF分詞模型,針對垂直領域美團搜索制定分詞準則,人工標注訓練語料并訓練CRF分詞模型。

在我們之前做的海外項目的分詞中,因為目前沒有開源的針對小語種的分詞器的,于是只能使用最基礎的空格分詞。例如用戶輸入的是“Be?ikta? Coco Bean Coffee”,經過分詞后,會得到“Be?ikta?”,“Coco”,“Bean”,“Coffee” 幾個詞,加上原文本一起分別進行搜索。

2)特殊詞處理

分詞結束后:

  • 部分被禁止的詞語,政治相關或色情相關的搜索詞,會被移除,不然,可能就會請喝茶了。
  • 有些預期主持,例如“嗎”“啊”等停用詞,會被移除。例如用戶搜索的詞語是“附近有咖啡廳嗎?”,其實就可以理解為“附近”和“咖啡廳”,“有”和”嗎“是可以去掉的。

3)同義詞識別

有些含義相同的詞語,例如經典的“西紅柿”和“番茄”,這些同義詞,需要人工維護,搜索運營會觀察搜索數據,講一些常見的同義詞,維護關聯到一起。這樣搜“西紅柿”的時候,也可以搜到“番茄”的結果。

4)實體識別(類目預測)

實體識別是根據用戶輸入的搜索詞,預測用戶想要搜索的實體(如商品、內容、表情等)。這一技術非常重要,可以很大提高搜索的準確度。

例如“珠江新城咖啡廳”這個搜索詞,在被分詞為“珠江”,“珠江新城”,“咖啡”和“咖啡廳”后,其中一些詞語會命中特點的類目,例如“珠江新城”會命中商圈、地鐵站的實體詞庫,“咖啡”會命中食物分類的實體詞庫,“咖啡廳”會命中餐廳類型的實體詞庫。

這樣的實體識別,可以預測用戶的搜索意圖,在下方做搜索結果的排序時,提高對應實體的排序。比如,在微信搜索中,如果你搜索“高啟強表情”,那么微信會優(yōu)先展示表情的搜索結果。

實體預測

2. 搜索

搜索的過程,實際上可以分為召回和排序兩步:

  1. 召回:把符合的搜索結果拿回來
  2. 排序:按照排序規(guī)則,對召回的結果進行排序

1)召回

召回時常見的問題是在「召回率」和「精確率」的取舍。

召回數據的太多,可能會導致召回了不相關的結果。召回的數據太少,有可能導致想要搜索的結果沒有召回。

我們可以通過增加篩選條件,通過實際識別技術,對不同的實體提供不同的召回率來優(yōu)化搜索結果。

例如還是在高啟強的案例中,通過名稱來搜索“高啟強”的的人數肯定是最多的,也就是“姓名”這個實體重要性最高。通過搜索“舊廠街”來搜索的人數其次,“住址”這個實體可以列為中等重要。而通過身高來搜索高啟強的人數肯定比較少,重要性最差。當用戶搜索 175 時,就沒必要召回高啟強的數據。

2)排序

常見的排序,是按照單一維度的排序。例如從近到遠排序,評分從高到底排序。

早期的大眾點評,提供了這樣的排序方式,但是因為單一維度的排序,往往很難滿足用戶的需求,會導致搜索結果中出現大量低質量的門店。所以后來,大眾點評也將“從近到遠”優(yōu)化成了“距離優(yōu)先”,將“評分從高到低”優(yōu)化為“好評優(yōu)先”,在距離和評分的基礎上,加上了其他考量因素。這樣既優(yōu)化了用戶體驗,也提高了商業(yè)效率。

復雜的排序方式,比如按照“相關度打分”算法排序,是根據文本的匹配度,對不同的搜索結果進行打分。讓相關度更高的搜索結果,分數就越高。例如在 Elastic search 的全文搜索中,默認根據 BM25 算法來計算文本相關度,根據文本匹配度來排序。

基于相關度算法,不同的實體之間的相關度對打分的影響,也是可以調節(jié)的。

在之前的海外 O2O2 交易平臺中,當分詞命中了實體詞庫后,我們會適當提高提高實體打分的權重。

例如我在大眾點評中,搜索“珠江新城”這個詞時,如果只考慮店鋪的名稱,那么名稱里含有“珠江新城”的搜索結果會排在前面,比如“XXX(珠江新城店)”,但這并不是用戶希望看到的,所以此時應該提高“商圈”的實體在打分排序中的權重。相應地,在搜索結果中,會優(yōu)先展示珠江新城商圈、咖啡廳的餐廳類型,咖啡的食物分類的搜索結果。至于提高多少,就需要根據實際情況來調優(yōu)了。

搜索_20220226

3. 結果展示

通過搜索,拿到數據后,最后一步就是搜索結果的展示了。也就是大家搜索后看到的頁面。各個應用可以根據自己的業(yè)務特點,設計對應的展示樣式。

在設計時需要考慮的是:

1)數據的展現樣式

例如在淘寶搜索不同商品時,展示的方式不一樣的,有的雙列瀑布流,有的是通欄的列表。

淘寶搜索結果展示

例如在微信中,搜索不同的內容,文章、視頻號、表情、百科等的展現形式都是不同的。

2)展示每一個搜索結果的哪些信息

例如在大眾點評中,每一個搜索結果都包含標題、圖片、評價、地理位置、距離、商圈、用戶評價、是否有套餐等等信息。產品設計是應該思考的是如何設計一個卡片的展示,在提供用戶想要的消費決策信息的同時,保證頁面的簡潔美觀,提高搜索的有效性。

珠江新城咖啡廳

4. 其他搜索相關的產品設計

還有一些其他的搜索產品設計,這里也簡單講一講。

1)搜索聯想詞

例如在淘寶的搜索框輸入詞語時,他會自動聯想你想搜索的結果。

搜索聯想詞的實現方式,是將平臺中常見的搜索詞作為一個庫,當輸入文本時,就通過前綴匹配來獲取數據,再根據搜索頻次等其他數據排序,展示成列表。

搜索聯想

2)熱搜詞

熱搜詞、或這是熱搜榜單,出現在搜索頁。

主要目標群體是給不知道要搜索什么的用戶提供一些熱門的搜索項。

熱搜詞

3)特殊的結果樣式

例如在淘寶中搜索店鋪名的時候,店鋪會以一個特殊的卡片樣式出現在頂部。

在信息流中,還可以插入廣告,插入其他內容等等。例如,在淘寶搜索商品時,商品流中會穿插著廣告、搜索建議、用戶調研、榜單、內容推薦等等。

4)排序方式和篩選

排序方式和篩選通常是放在一起將的,但在【搜索】部分已經提及,不再贅述。

而篩選方式,是提供用戶主動選擇的,幫助自己快速定位信息的工具。根據不同的也誰,篩選項會有很多。

舉個例子:

  • 貝殼找房搜索的篩選器:可以根據行政區(qū)域,地鐵站、地標、整租/合租、租金范圍,活動,樓層,設施等等來進行篩選;
  • 淘寶搜索的篩選器:可以根據折扣類型,價格區(qū)間,發(fā)貨地,店鋪所在城市等等進行篩選。

篩選器的設計也都大同小異,許多交互已經標準化了。

篩選器

四、結語

總結一下,這篇文章主要介紹了站內搜索的基本原理、相關設計和優(yōu)化方法。當用戶輸入一個關鍵詞后,要經過文本分析后,進入搜索服務。搜索服務處理后,返回的搜索結果,前端再根據合適的展現方案展示,這是搜索的基本流程。除此之外,還介紹了一些搜索相關的產品設計、熱搜詞聯想詞等等。

這篇文章可以算是搜索產品的基礎,了解這些可以幫助更好地理解搜索技術。

文章不足之處,主要在于對于人工干預搜索的部分,沒有很好的展現。大多數產品都會做自己的搜索后臺,用于讓搜索運營處理無結果搜索結果優(yōu)化,同義詞識別,敏感詞維護等等。這些內容,后續(xù)有機會再分享。

對于互聯網產品,無論在電商平臺還是內容平臺,搜索都是用戶高頻使用的,尋找信息的方式。在日常生活中,搜索也是我們高頻使用的。

如果覺得這篇文章對你有幫助,求關注轉發(fā)點贊~

本文由 @潦草學者 原創(chuàng)發(fā)布于人人都是產品經理,未經許可,禁止轉載。

題圖來自Unsplash,基于CC0協議。

該文觀點僅代表作者本人,人人都是產品經理平臺僅提供信息存儲空間服務。

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發(fā)揮!