01 Apache Solr:提高檢索體驗 爲何是Solr

背景:

     最近開發一個大型的倉儲管理平臺項目,項目的前身是無數個版本的歷史悠久的基於CS模式的Windows桌面程序。而後對於每個客戶,咱們可能須要爲之定製比較個性化的特殊功能。因而,有一個核心研發團隊,以一兩年爲週期開發一個核心功能版本的軟件;而後拿出去推廣銷售,往往銷售成功,作售前的同事都是拿了一大堆定製化的需求回來的;而後一場在覈心功能上的定製和個性化擴展就開始了,完成開發就能夠去客戶現場實施了;最後,就會有部分維護的同事將這個客戶的系統歸入他們的平常工做清單中。周而復始。誠然,這種方式在大多數軟件公司都能看到,可是我公司是一個有想法的公司,怎麼可能讓這樣的套路進行到底呢!?
     這裏把關於爲何要作平臺的描述省略,總之就是要作平臺了,搞SaaS了,不買軟件賣帳號了。可是這個時候產生了一個關乎用戶體驗的事情:從前使用CS程序,在每一個客戶端緩存了大量數據(一般有數G),因此客戶對於信息的檢索很是的快速;若是換成BS架構,咱可沒地方存那麼大量的數據,並且經過SaaS的方式會把全部客戶的數據都存放在平臺端,事情發展到這裏,好像項目的失敗已經註定。
     就在你們焦頭爛額,苦悶不堪的時候,咱們發現了一種已經在江湖上良好發展的技術:搜索引擎。雖然沒用過,可是聽過嘛!因而一段圍繞着搜索引擎的工做便就此展開。
 

搜索引擎:

     維基百科給出了這樣的定義:搜索引擎指自動從因特網蒐集信息,通過必定整理之後,提供給用戶進行查詢的系統。
 

工做原理:

     一、蒐集信息:搜索引擎的信息蒐集基本都是自動的。搜索引擎利用稱爲網絡蜘蛛的自動搜索機器人程序來連上每個網頁上的超鏈接。機器人程序根據網頁鏈到其中的超連接,就象平常生活中所說的「一傳十,十傳百」同樣,從少數幾個網頁開始,連到數據庫上全部到其餘網頁的連接。理論上,若網頁上有適當的超連接,機器人即可以遍歷絕大部分網頁。
     二、整理信息:搜索引擎整理信息的過程稱爲「創建索引」。搜索引擎不只要保存蒐集起來的信息,還要將它們按照必定的規則進行編排。這樣,搜索引擎根本不用從新翻查它全部保存的信息而迅速找到所要的資料。想象一下,若是信息是不按任何規則地隨意堆放在搜索引擎的數據庫中,那麼它每次找資料都得把整個資料庫徹底翻查一遍,如此一來再快的計算機系統也沒有用。
     三、接受查詢:用戶向搜索引擎發出查詢,搜索引擎接受查詢並向用戶返回資料。搜索引擎每時每刻都要接到來自大量用戶的幾乎是同時發出的查詢,它按照每一個用戶的要求檢查本身的索引,在極短期內找到用戶須要的資料,並返回給用戶。目前,搜索引擎返回主要是以網頁連接的形式提供的,這樣經過這些連接,用戶便能到達含有本身所需資料的網頁。一般搜索引擎會在這些連接下提供一小段來自這些網頁的摘要信息以幫助用戶判斷此網頁是否含有本身須要的內容。
 

正確的方向:

     經過背景和搜索引擎的原理描述,初步能夠判斷,方向是正確的。
     第1、蒐集信息。咱們的信息來自於倉儲管理平臺的平常業務,這些數據自己便存儲在平臺的數據庫,搜索引擎要作的蒐集信息,應該是可以想辦法把業務系統中的數據蒐集過來。不管方法採用主動仍是被動,總之信息是要蒐集的,只不過範圍由整個互聯網變成了咱們自建的平臺。
     第2、整理信息。平臺的數據存儲是遵循RMDBS的,形式上有其固有特色,是否利於檢索,至少在開始正兒八經作搜索的時候是有待商榷的。在這個假定的基礎上,咱們必定須要對搜索引擎蒐集到的信息進行編排和整理的。
     第3、接受查詢。毫無疑問,這是咱們最終的目標,也是用戶可以感覺到的惟一功能---查詢,並且是高效的查詢。
 

怎麼選?

     隨着互聯網技術的發展。開源的搜索引擎實在數不勝數,諸如Lucene、Sphinx、Xapian、Nutch、Datapark Search、Zettair、Indri、Terrier、Galago、Zebra、Solr、ElasticSearch、Whoosh等。咱們選擇的範圍也基本肯定在這裏面。結合公司實際狀況附加以下原則:
     一、應用普遍(別人把坑踩得差很少了)
     二、易於使用(節省學習時間和成本)
     三、社區活躍(不用擔憂過幾天它從江湖上消失)
     四、技術跨度不大(下降學習成本)
     綜上、最後初步選定了Solr做爲項目的第一候選方案。主要由於,它創建在Lucene之上;基於全文索引;提供RESTful API;使用門檻並不高;已經在市場上有普遍的應用。
 

願景:

     在開始瞭解Solr方面的資料的時候,查了不少網站可是中文信息不多,並且大可能是講解如何安裝入門的,實際用處並不大。我但願能結合我項目的實際使用,把此次經歷記錄下來,同時儘量豐富中文關於中文方面的資料。後面的分享會圍繞Apache Solr 6.3開始。
相關文章
相關標籤/搜索