天天看點

雲栖硬核回顧|企查查搜尋引擎演進之路

本文來自于2019年雲栖大會--搜尋推薦工程技術專場嘉賓:企查查技術總監 朱正亮 的分享

前言

企查查作為企業征信行業的搜尋引擎,一直以來都與阿裡雲開放搜尋團隊有深度合作。本次朱總獨家揭秘,開放搜尋陪伴企查查從創業初期到成為企業征信行業的獨角獸的過程中,是如何滿足企查查産品海量資料的精準搜尋需求的。

  • 本文字數:2751 個
  • 閱讀時間:約9分鐘
  • 您将了解:
  1. 企查查搜尋引擎演進之路
  2. 開放搜尋在業務中的應用場景
  3. 探讨未來搜尋服務的形式

以下是來自企查查_朱總的演講分享,點選

訂閱《阿裡雲搜尋與推薦技術交流期刊》

,擷取本片原文幹貨文稿!

創業初期如何平衡搜尋效率、成本和穩定性

初期,我們作為一家初創公司,産品疊代“效率”是優先考慮的問題,在我們隻有100萬的資料文檔時,選用的是關系型資料庫作為資料存儲。但随着我們推出正式版,産品受市場歡迎程度大大超過了預期,随之而來的就是公司文檔數、使用者量、通路量的急速增長過程中逐漸暴露出的技術問題,迫使我們不停更新配置,并不斷調整搜尋方案。在這個階段,我們開始逐漸接觸阿裡雲的Elasticsearch、Opensearch、ElasticFlow等。

在資金成本和時間成本的綜合考慮下,我們放棄了傳統資料庫,并選擇Opensearch作為替代産品;開放搜尋的接入成本較低,在快速完成搜尋方案的替換後,一切都很順利,性能問題及傳遞的效率問題均成功解決。同時在後續的版本疊代中,流量翻了幾十番的情況下,開放搜尋(Opensearch)的彈性服務對于我們的基礎搜尋業務的保障也算穩定;

雲栖硬核回顧|企查查搜尋引擎演進之路

下圖是最近幾年企查查疊代的縮影,我們確定每月有大疊代,每周有小疊代的高頻疊代速度,對搜尋工程師來說,主要工作就是:1、映射字段;2、修改索引;3、修改Quary;4、輸出Quary;那麼回到之前的問題,基于開放搜尋文法的易用性,調試的便利性,有效的縮減了搜尋人員的時間成本。

雲栖硬核回顧|企查查搜尋引擎演進之路

我們推出的第一版産品叫“企業信用資訊查詢”,隻有最基本的資料,用的是關系型資料庫,而到今年6月份,每家企業的資料次元已經達到了100個,而參與搜尋的資料次元有45個,如此多的資料會存在于不同的資料源裡面,做搜尋的同學就需要對接各種資料源,經常處于繁雜的灌資料、删資料、再重新灌的工作中,開放搜尋在這一點上幫我們節約了不少運維成本。

雲栖硬核回顧|企查查搜尋引擎演進之路

截止到今年年初,企查查全球商業資料庫涵蓋了200多個國家,4億多個企業主體,并且參與搜尋的文檔總數超過了20億。資料量的大幅度提升給我們帶來了新的挑戰,就是全量資料灌入、千萬級資料翻新的時間挑戰。資料公司對于資料的及時性是有嚴格的要求的,滞後的資料約等于無效的資料,資料價值會顯著降低。我們的本地資料搜尋是基于開源的搜尋引擎完成的,關于資料更新,一直未能完美解決性能和效率的問題。生産線的搜尋基于開放搜尋,千萬級的資料翻新則完全無此問題,無需在性能和效率之間做妥協。

雲栖硬核回顧|企查查搜尋引擎演進之路

與大部分資料公司一樣,我們的産品疊代快、次元多、資料多。在第一版産品上線一周後,實作了100萬的文檔數、1萬使用者以及100 KPS峰值,而到了今年年初,我們的文檔數突破了20億,超過2億使用者,以及平均QPS(主搜)超過了3000。而從最初100萬的文檔數,到今年初的20億的文檔數,開放搜尋在穩定性上給了我們很大的支援,同時也幫我們減少了較多的人員、時間成本。

雲栖硬核回顧|企查查搜尋引擎演進之路

如何滿足高階搜尋需求

起初我們開始對搜尋的期望,是使用者輸入什麼我們給他什麼,傳回使用者想要的東西就可以。後來出現了問題,比如一位使用者回報在我們的平台無法查詢到他們的公司。我們檢視了使用者的輸入日志,發現使用者輸入的是“新奧混疑土”,但需要檢索的公司叫“新奧混凝土”,為了解決這個問題,我們接入阿裡雲的同義詞/形近字/同音詞的功能,後面對“新奧混凝土”、“經濟公司”、“經紀公司”等都做了一些相容;

後面是分詞的問題。初期我們了解的分詞也較為簡單,做為一家做企業征信的資料公司,不需要做泛泛的分詞,因為企業名稱存在一定的特殊性,比如“杭州阿裡巴巴科技有限公司”、“蘇州朗動網絡科技有限公司”,前面都是省市區,後面是“科技”、“網絡”公司,斬頭去尾後,将剩下的字根據其凝固度和自由度,做了自己的分詞字典,後面我們對比了阿裡雲提供給我們的分詞産品,效果差距比較大,最終還是決定選擇了阿裡雲的分詞。

此後還有主體和認知的問題。當我們聽到“北大”的時候,會想到“北京大學”,聽到“阿裡”的時候,會想到“阿裡巴巴”,而使用者輸入的時候,同樣會帶有主體認知,但搜尋引擎并沒有一緻的認知。搜尋引擎不知道“蘇大”是蘇州大學,它傳回你的或許是“蘇大強”。那麼我們就需要将常識中的認知,持續的同步給搜尋引擎,讓它在處理使用者的搜尋入參時,能了解一些俗語。而這一塊工作,并不需要我們的搜尋團隊做太多幹預,開放搜尋也具備了通用的主體資訊,我們隻需做适當補充即可。

雲栖硬核回顧|企查查搜尋引擎演進之路

當然,即使再完美的應對機制,也無法保障所有的搜尋都能滿足使用者的搜尋預期。在一定的時候我們也會存在一些幹預。下圖中的一些輸入,我們對使用者的輸入進行了糾錯,同時保留選擇的權利。這期間搜尋團隊在後端接入了較多服務,一部分是我們自己做的,另一部分是直接接入了阿裡雲的服務,比如他的新詞發現、人氣模型、主體識别、實時提權等。

雲栖硬核回顧|企查查搜尋引擎演進之路

企查查搜尋的後續方向

前面分享了較多企查查搜尋的現狀,我們再聊聊企查查搜尋的後續方向。套用個年度熱門句式,“搜尋不再是搜尋”。怎麼了解?打個比方,當我們輸入小米的時候,關注網際網路的使用者,我們期望傳回給他的是“小米科技”、如果關心糧食蔬菜的,我們期望傳回給他的是“小米農業發展公司”,關注金融的,我們就給他“小米金融”,簡單來說就是實作千人千面,這需要持續的上下文分析的,以及使用者畫像的沉澱。

雲栖硬核回顧|企查查搜尋引擎演進之路

另一方面,我們發現使用者不僅是對關鍵詞的輸入,也會有口語化的輸入,比如使用者會問“小米的招股書在哪裡”“華為的股東有哪些”“京東的年報有沒有發”面對這類情況,我們又該如何處理?這就又涉及到NLP團隊,涉及到知識圖譜的建設。此時的搜尋,不再僅僅是搜尋團隊的事,會涉及到多團隊,多資料的整合。

“搜尋依然是搜尋”:無論搜尋怎麼擴充資訊,最終我們評估搜尋的标準依然是回歸到搜尋的本身,即是否傳回使用者最想要的資訊。怎麼度量這個,如何評估搜尋的好壞?如何确認搜尋人員做到的精準,是否就是使用者想要的?企查查對于搜尋的評估主要基于如下4個名額Top3SuggestNullHitRate。我們持續關注上述這個名額的變化,并持續予以優化。

1. TOP3

我們的結果集常态的輸入可能有數十條數百條,精準的搜尋可能隻有1條記錄,最大的則能達到1萬條。對于不同量級的結果集,我們關注前三條使用者的點選比例,并把這個名額作為衡量整個搜尋是否精度的最主要名額。

2. Suggest

使用者每多輸入一個字數,結果集都是在變化,他什麼時候點選相當重要,如果持續不點選suggest意味着使用者需要輸入更多的字數,這時會判斷推薦詞是否是他想要的,如果該名額比例提高會有效減少使用者的輸入時間。這也是評估搜尋是否精準的一個重要名額。

3. Null

無結果是搜尋比較糟糕的體驗,為了規避無結果的占比,我們除了分析使用者的輸入以推動糾錯,相容形近、音近等情況,還補全了諸如二次搜尋等機制。

4. HitRate

整體的點選搜尋比,宏觀面的資料,既可以輔助分析使用者的搜尋行為,也可以反推目前的資料品質走勢。

通過對上述名額的持續跟進,我們可以較為直覺的知道整個搜尋團隊的工作是否在往更好的方向發展,同時也能分析到給使用者的搜尋習慣走勢。

雲栖硬核回顧|企查查搜尋引擎演進之路

當然,關于搜尋,我們除了上述各種預設的機制外,對于熱門的搜尋,我們也特别增加了人工幹預,以規避新詞更新不及時,熱點事件排序不合理問題。

加入社群

點選

如果你想與更多開發者交流随時交流、了解最前沿的搜尋與推薦技術,可以掃碼加入社群

雲栖硬核回顧|企查查搜尋引擎演進之路

相關産品

開放搜尋(Opensearch)

阿裡巴巴自主研發的大規模分布式搜尋引擎平台,其核心引擎HA3(問天3)系統為包括淘寶、天貓在内的阿裡集團核心業務提供搜尋服務支援。通過內建智能查詢語義了解、機器學習排序算法等能力,旨在為企業提供高搜尋品質的一站式内容智能搜尋服務。

智能推薦(AIRec)

基于阿裡巴巴領先的大資料和人工智能技術,結合在電商、内容、新聞、視訊直播和社交等多個行業領域的積累,為全球企業及開發者提供個性化推薦服務