談談對搜尋技術Elastic Search&Lucene的理解

李博Garvin發表於2018-10-09

前言

十一一直陪家人,所以也沒時間寫文章。最近剛好趕上Elastic Search上市,其實在圈子裡還是挺轟動的,因為這個也是少數的靠賣開源軟體服務上市的公司。大家都知道ES是做搜尋服務的,今天就聊聊我對搜尋的認識

從業務屬性講

搜尋的話,其實是大家接觸最多的一類業務。其實說機器學習,其實是一門技術,而搜尋是一項業務,機器學習可以應用到搜尋業務中去,同時中介軟體技術、資料庫技術等都跟搜尋密不可分。

從業務屬性上講搜尋的話,在我眼裡分為兩種。一種是簡單的匹配類搜尋,一種是業務導向類。前者的追求是最高效率的找到跟輸入資訊匹配的內容,Google、百度做的事情就是這種。業務導向型,更多地是將搜尋賦予業務邏輯,比如A在電商平臺搜尋以一個包,電商平臺可以根據A的消費能力去匹配最合適的產品,甚至返回的不是包而是一個跟包搭配的裙子。

倒排索引/正派索引

真正的搜尋業務不會是暴力的從全部資料中遍歷搜尋的。一定是將一類資料建成索引。倒排或者正排表示的是索引建立的方法,這個索引建立也就是資料建模過程,是搜尋系統的核心。

在這裡插入圖片描述

上圖是一種索引關係,正排索引是以Document,也就是文章ID為主key,如果要搜尋某個關鍵詞,需要遍歷每一篇文章,搜尋的時候計算量很大,好處是建模容易。

倒排索引就是以詞為主key,搜尋的時候找到詞之後返回這個詞所在的文章。這種方式搜尋的時候計算量小,建模比較難。倒排索引也是目前的主流搜尋索引建模方法。

Lucene

Lucene是非常有名的搜尋引擎了,包含下面的整套架構,從上面提的索引建立,到使用者的訪問。

在這裡插入圖片描述

Elastic Search其實是在這一套上面做了分散式服務,規範了各種訪問和查詢介面,支援多點容災和查詢。

未來的搜尋

現在的搜尋其實已經內嵌了很多機器學習相關的元件,比如建索引的時候會有分詞、文字理解相關的應用。未來隨著人工智慧的發展我覺得搜尋這項業務的本質會發生變化。

現在搜尋做的事情是匹配使用者輸入的資訊和世界上已經存在的資訊。未來隨著類似於深度學習GAN模型的發展,或者其它生成類技術的發展。

搜尋會變成自動生成使用者輸入的內容,比如現在使用者輸入“黃片兒”,搜尋引擎是利用爬蟲去找已經存在的黃片,未來可能就直接現場人工智慧造一個黃片返回,甚至能根據使用者習慣自定義。

這個就是想說的內容,未來機器學習在搜尋領域一定大有可為,持續關注這個業務方向~

相關文章