談談對搜尋技術Elastic Search&Lucene的理解
前言
十一一直陪家人,所以也沒時間寫文章。最近剛好趕上Elastic Search上市,其實在圈子裡還是挺轟動的,因為這個也是少數的靠賣開源軟體服務上市的公司。大家都知道ES是做搜尋服務的,今天就聊聊我對搜尋的認識
從業務屬性講
搜尋的話,其實是大家接觸最多的一類業務。其實說機器學習,其實是一門技術,而搜尋是一項業務,機器學習可以應用到搜尋業務中去,同時中介軟體技術、資料庫技術等都跟搜尋密不可分。
從業務屬性上講搜尋的話,在我眼裡分為兩種。一種是簡單的匹配類搜尋,一種是業務導向類。前者的追求是最高效率的找到跟輸入資訊匹配的內容,Google、百度做的事情就是這種。業務導向型,更多地是將搜尋賦予業務邏輯,比如A在電商平臺搜尋以一個包,電商平臺可以根據A的消費能力去匹配最合適的產品,甚至返回的不是包而是一個跟包搭配的裙子。
倒排索引/正派索引
真正的搜尋業務不會是暴力的從全部資料中遍歷搜尋的。一定是將一類資料建成索引。倒排或者正排表示的是索引建立的方法,這個索引建立也就是資料建模過程,是搜尋系統的核心。
上圖是一種索引關係,正排索引是以Document,也就是文章ID為主key,如果要搜尋某個關鍵詞,需要遍歷每一篇文章,搜尋的時候計算量很大,好處是建模容易。
倒排索引就是以詞為主key,搜尋的時候找到詞之後返回這個詞所在的文章。這種方式搜尋的時候計算量小,建模比較難。倒排索引也是目前的主流搜尋索引建模方法。
Lucene
Lucene是非常有名的搜尋引擎了,包含下面的整套架構,從上面提的索引建立,到使用者的訪問。
Elastic Search其實是在這一套上面做了分散式服務,規範了各種訪問和查詢介面,支援多點容災和查詢。
未來的搜尋
現在的搜尋其實已經內嵌了很多機器學習相關的元件,比如建索引的時候會有分詞、文字理解相關的應用。未來隨著人工智慧的發展我覺得搜尋這項業務的本質會發生變化。
現在搜尋做的事情是匹配使用者輸入的資訊和世界上已經存在的資訊。未來隨著類似於深度學習GAN模型的發展,或者其它生成類技術的發展。
搜尋會變成自動生成使用者輸入的內容,比如現在使用者輸入“黃片兒”,搜尋引擎是利用爬蟲去找已經存在的黃片,未來可能就直接現場人工智慧造一個黃片返回,甚至能根據使用者習慣自定義。
這個就是想說的內容,未來機器學習在搜尋領域一定大有可為,持續關注這個業務方向~
相關文章
- GSLB是什麼?談談對該技術的一點理解
- 後端技術雜談2:搜尋引擎工作原理後端
- 談談你對Promise的理解Promise
- 談談對中斷的理解
- 後端技術雜談1:搜尋引擎基礎倒排索引後端索引
- 談談我對Spring IOC的理解Spring
- 搜尋姿勢淺談
- 談一談對vuex的簡單理解Vue
- 談談對MVC、MVP和MVVM的理解?MVCMVPMVVM
- 每日一問:談談對 MeasureSpec 的理解
- 談談我對服務化的理解
- 談一談我對Spring Resource的理解Spring
- 談談我對js中閉包的理解JS
- 談談我對服務網格的理解
- 談談你對前端效能優化的理解前端優化
- 談談對IOC及DI的理解與思考
- 談談數字城市的技術短板
- 面試——談談你對Java 平臺的理解面試Java
- 談一談對vue-router的簡單理解Vue
- Java面試題:請談談對ThreadLocal的理解?Java面試題thread
- 淺談從搜尋到動歸
- 【Java 容器面試題】談談你對HashMap 的理解Java面試題HashMap
- 搜尋器robot技術
- 談談我對物件導向以及類與物件的理解物件
- 【搞定面試官】談談你對JDK中Executor的理解?面試JDK
- 面試——談談你對Java 物件導向思想的理解面試Java物件
- 談談我對深拷貝和淺拷貝的理解
- 談一談我對‘模板方法’設計模式的理解(Template)設計模式
- 淺談對java-GC的理解JavaGC
- MVC、MVP、MVVM,談談我對Android應用架構的理解MVCMVPMVVMAndroid應用架構
- 談談我對 AIGC 趨勢下軟體工程重塑的理解AIGC軟體工程
- 談談對分散式事務的一點理解和解決方案分散式
- Java開發必讀,談談對Spring IOC與AOP的理解JavaSpring
- 第 15 題:談談你對迴流和重繪的理解?
- 談談 Javascript 的執行機制及對同步非同步的理解JavaScript非同步
- 談談中國第一款AI搜尋產品——天工AIAI
- 淺談對標記永久化的理解
- 搜尋排序技術簡介排序