版權聲明:本文由林少彬原創文章,轉載請註明出處:
文章原文連接:https://www.qcloud.com/community/article/89html
來源:騰雲閣 https://www.qcloud.com/community架構
QQ空間相冊的旅遊相冊,它以照片拍攝時間爲主線,還原了旅遊行程中的故事,清晰展示了用戶行程景點位置及拍攝的美景。景點位置查詢做爲旅遊相冊一個重要功能,能夠幫助用戶找回旅途中的足跡。騰訊內部搜索平臺部成立不久便託管了景點POI搜索業務,支持用戶景點輸入智能提示、國內外景點搜索。
性能
旅遊相冊POI搜索業務自2013年10月上線後,從最開始的僅支持國內景點搜索到國外景點數據補充,再到針對性地修補景點數據,從數據層面作了大的修補。搜索點擊率也隨之逐漸提高。時隔數年,再次拾起,但願能夠經過總結整理,達到知識分享、提高的目的。優化
POI搜索智能提示主要用於用戶輸入景點檢索串時,實時進行相關結果快速提示的場景。一方面能夠補充提示用戶所要輸入的位置信息,另外一方面能夠引導用戶搜索精確化,從而提升景點搜索結果準確度及結果點擊率。
針對以上業務特性,POI搜索業務架構有別於其餘通用搜索,主要體如今數據補充、離線索引、在線檢索三個模塊。網站
目前數據分爲三個來源:spa
離線索引主要功能包括接收POI原始數據,創建倒排、順排、屬性、等索引,離線打分。基於地圖POI數據更新週期較長、同步集中的特色,POI搜索業務採用了按期全量推送加天天增量推送的更新方式。
爲支持用戶輸入景點的實時檢索,咱們設計了兩套索引結構:前向匹配切詞索引、普通分詞索引,保證用戶檢索結果能夠前綴命中或分詞命中檢索串,從而提高用戶檢索體驗。架構設計
爲支持行政區名檢索,離線索引對每一個POI文檔的省、市、區行政區名創建了特殊索引:首先創建行政區名到行政區名字母映射表,查表獲得POI對應行政區字母縮寫,再經過添加特殊前綴標記的方式,把帶特殊前綴的行政區字母標記添加進這篇文檔的順排詞表。支持行政區識別檢索效果以下:
設計
行政級別權重 > POI類別權重 > 主副點
行政級別權重:國家 > 省 > 市 > 縣 > 末級POI
類型權重:旅遊景點 > 其餘
主副點:主點 > 副點,好比 銀科大廈 > 銀科大廈停車場,簡單比較方法是詞長越短越重要htm
帶行政區名的檢索串識別到行政區後,行政區名做爲分類過濾條件結合去行政區後的檢索串進行前綴索引檢索。效果以下:
排序
無行政區名的檢索串直接進行前綴索引檢索。效果以下:
獲取分詞結果後進行分詞索引檢索。效果以下:
根據業務側提供的會話級檢索詞,即用戶選中推薦地點時落下的檢索串。會話級零結果數佔天天會話級檢索量接近四分之一
抽樣會話級零結果檢索串分析以下:
檢索串類型 | 示例 |
---|---|
時間+相冊主題 | 2005年的我 |
相冊主題 | 一個人的旅途 |
地點缺失 | 上海普陀區梅川路步行街 |
輸入有誤 | 巴黎羅浮宮 |
包括時間+相冊主題、相冊主題類型的檢索串。用戶在地點框誤輸入相冊主題,輸入與景點搜索無關,檢索串格式比較混亂
用戶輸入帶範圍描述詞的地點,好比:東莞莞城區西城樓附近、哈爾濱松花江江邊。有些地點沒有索引進來,好比:柳城太平安樂湖、康巴什賽馬場
少數輸入拼寫錯誤,好比:巴黎羅浮宮
致使零結果的檢索串中相冊主題類型佔了絕大部分;地點缺失問題主要是用戶不能肯定景點位置致使;數據缺失問題比例相對較小。
產品側策略:經過產品側對用戶的輸入作引導,幫助用戶區分相冊描述、景點位置輸入框,提高檢索串質量。
數據補充策略:針對地點缺失的問題,經過抓取旅遊網站著名景點數據補充。
在線處理策略:後續考慮引入QC糾錯,解決拼寫錯誤等問題。
引入QC糾錯及補充著名景點數據先後,搜索零結果率有所降低,效果以下:
從各種型結果曝光狀況看出,非旅遊景點、非行政區的結果檢索獲得的POI數最多;搜索結果總體趨向景點、地址搜索的場景,因爲對風景名勝等景點相關的POI數據離線打分權重相對較高,致使其餘類型數據召回效果並不理想。
針對特定類型(如機場、火車站、汽車站等)檢索需求,離線索引會對這類POI文檔創建分類類型特殊索引,在線檢索對檢索串語法分析時,能夠識別出其分類意圖及分類類型,轉化爲分類過濾條件下發。效果以下:
經歷了QQ空間相冊等業務的高速發展,景點POI搜索應用積累了豐富的應用場景與應用經驗,不斷提高性能及優化用戶體驗,足夠成熟後已做爲「騰訊雲搜」產品的能力之一開放給廣大的開發者用戶。