譯者序
搜索無處不在,搜索已經融入我們工作、生活的方方面面。除每天使用的通用搜索引擎以外,幾乎我們使用的所有互聯網應用、ERP、企業內聯網等都提供(或應該具備)了搜索功能。我們向搜索引擎發出查詢請求后,很快就能得到一大堆相關的搜索結果,它是怎么做到的呢?這是搜索引擎的黑箱秘密。開源搜索技術Solr&Lucene是一套很好的技術工具,能夠幫助我們打開這一黑箱,洞悉搜索引擎背后的技術原理與運行機制,并能夠借此“真槍實干”地做搜索。
一種觀點認為,搜索引擎是信息檢索系統的一種類型,即面向網絡環境中的海量異構數據的采集、組織與檢索。在學科專業領域中,信息檢索的研究一直以來都是象牙塔里的一門高深學問。Solr&Lucene的出現拉近了信息檢索學術界與搜索引擎業界之間的距離,加速了搜索應用的設計與開發,新的模型算法與搜索功能在Solr的開發技術架構中得以快速轉化與實現。
信息檢索是“用戶需求(行為)—搜索技術(引擎)—信息資源(集合)”三位一體的復合研究主題。搜索研究的原始起點是用戶需求與搜索行為,搜索引擎技術是將用戶需求與信息資源進行相關度匹配的重要中介手段。沒有搜索技術就無從著手開發,不關注用戶需求與搜索行為的話,搜索就無從談起。那么,如何全面理解搜索并開發搜索應用?為了回答這個問題,《Solr實戰》的內容安排試圖在技術、資源與用戶三者之間找到一種平衡。本書以用戶搜索問題解決為導向,通過各種操作實例,全面系統化地介紹了Solr的主要功能與使用方法。由于搜索引擎技術體系龐大,涉及數據采集(網絡爬蟲)、文本處理、自然語言處理、索引、搜索及其他許多方面,要把這么多理論內容和實踐操作放進一本書里,著實不是一件容易的事情,然而本書作者做到了!本書雖然也算得上是一本大部頭,但相較于很多大部頭技術書,作者對技術細節與技術復雜度的收放考慮還是比較得當的,同時也兼顧涵蓋了分布式SolrCloud、多語種搜索、個性化推薦等熱門主題,具有較好的搜索基礎普適性與進階助推性作用。
如果把搜索引擎比作一臺汽車,Lucene與Solr的關系就好比是“發動機”與“造車平臺”。Lucene提供了核心的索引與搜索功能,Solr向下對Lucene進行了底層技術封裝,隱藏了大量技術細節,降低了進入搜索應用開發的技術門檻。與此同時,Solr向上擴展了開放集成的大量高級搜索功能,用來滿足各種搜索業務需求。因此,Solr為我們提供了一個更易于學習、操作與應用的全功能開源搜索平臺。面對現實的搜索業務需求,從Solr入手可以讓你進入搜索技術應用層的快車道,通過對Solr的深入了解與搜索業務結合,在解決實際搜索問題的大前提下,繼而回歸到Lucene內核的學習。當遇到諸如索引效率問題、相關度模型與算法問題時,自然而言地就深入到Lucene內部了。所以,從搜索應用設計與開發的角度來看,從Solr入門是一條更有實踐效率和學習成就感的途徑。
當前開源搜索技術研究與實踐非常活躍,這直接反映在了Solr的版本變化上。2010年3月Solr開源項目與Lucene開源項目合并之后,Solr成為Lucene的一個子項目。從3.1版本起,Lucene與Solr的版本保持了一致。版本更新在索引與搜索性能優化、多元化搜索功能引入、交互體驗設計、bug修復等方面不懈地努力著,但Solr搜索技術的核心模塊并沒有發生實質性改變。所以,從搜索技術的學習角度來說,書中使用的Solr版本是夠用的。Solr5.0之后涉及少量基礎操作命令的變化,但這不影響書中內容的講解,我們在書中必要的地方做了注釋,方便讀者對比。當然,寄希望于讀完一本書就能勝任搜索開發恐怕是不現實的。面對網上各種碎片化、不同版本的Solr技術資料,對于初涉搜索技術的入門者而言,以這本大部頭作為搜索技術學習的小目標,會是一個不錯的選擇。
本書的初譯按章節分工如下:范煒負責第1、5、6、7、8、16章,侯任夷負責第2、3章,金國棟負責第4、12章,鄒婧琳負責第9、10章,陳皇丹負責第11、13章,吳亞平負責第14、15章,張功衛、伍志鵬負責附錄與其他翻譯資料的整理。最終由范煒進行全書的統稿與校對,胡康林參與了校樣的審讀。
本書的翻譯工作歷時較長,在此期間王中英與符隆美兩位編輯給予了充分信任與理解,并付出了大量辛苦工作,對此表示衷心感謝。鑒于譯者專業水平有限,以及專業術語的不一致等問題,譯文中難免存在不當之處,懇請讀者批評指正。
范煒
2017年3月4日于川大江安河畔
原書推薦序
Solr擁有悠久而成功的歷史,Solr4和SolrCloud開啟了全新的篇章。《Solr實戰》的出版非常應景。書中包含清晰的案例、啟發性的圖表,涵蓋了從核心概念到最新功能的方方面面,有助于你快速掌握Solr。
2004年,CNET科技資訊網(現在的CBS互動媒體公司)的搜索引擎服務提供商不再提供服務,CNET需要一套搜索替代方案,于是有了Solr。我開始編寫Solr的時候,雖然不具備專業搜索背景,但做起來很上手。這可能與我的軟件設計理念“要快”有關。這一觀點有助于Solr在傳統企業搜索市場以外得以拓展。
截至2005年年底,Solr為CNET旗下的許多網站提供了搜索與分面導航功能,而且很快成為了開源軟件。2006年1月,Solr被捐贈給了Apache軟件基金會,成為LucenePMC的子項目,與LuceneJava(現在的LuceneCore)是兄弟項目關系。由于Solr使用Lucene作為全文搜索核心庫,兩者的技術開發人員有較大的重合度,2010年兩個項目就合并在一起了。現在Lucene和Solr仍然可以分別下載,但它們的開發由一個團隊統一進行管理。Solr版本號跳躍式地匹配了Lucene版本號,因而兩者新版本的發布得以同步。
Solr4版本是Solr的一個重要里程碑,增加了SolrCloud。SolrCloud擁有一組高度可擴展的功能,包括無單點故障的分布式索引構建。NoSQL方面的功能擴展包括事務日志、更新持久性、樂觀并發與原子更新。Trey和Timothy作為Solr的資深專家和社區成員,他們撰寫的《Solr實戰》一書涉及了Solr重要的新功能,并為Solr新手提供了很好的起步指引。
原書推薦序
現在Solr的應用比我預想的要多得多,涉及圖書館集成系統、電子商務平臺、數據分析與商務智能產品、內容管理系統及互聯網搜索,等等。Solr從早期只有少數采用者逐漸成長為大規模的全球社區,在用戶的幫助和志愿者的積極推動下,不斷向前發展。
《Solr實戰》介紹了Solr使用的必備知識和技術,這些都是自2004年以來的開發積累。本書在手,可以助你掌握Solr的開發。你也可以加入到Solr的全球社區,推動Solr更好地發展。
YonikSeeley
Solr的創造者
前言
2008年,我受命接管凱業必達(CareerBuilder)招聘網的搜索技術團隊。最初使用微軟的FAST搜索平臺,但隨后我們意識到,搜索對凱業必達招聘網而言非常重要,與其繼續依賴搜索服務提供商,不如在團隊內培養搜索專家。我隨即開始調研同類型的開源搜索軟件,發現Solr似乎滿足我們搜索開發所需的大部分核心功能。2009年夏,經過充分的搜索技術準備之后,我們決定將已有的搜索系統轉換到Solr。
Solr的發展很順利。Solr構建在開源搜索庫Lucene之上。2005年2月,Lucene正式成為Apache頂級項目。2006年Solr被捐贈給Apache軟件基金會,并于2007年1月成為Apache頂級項目。這兩項技術的發展都達到了一定規模之后,在2010年3月合并為一個項目。
2010年夏,我們的搜索平臺完全轉換到了Solr。在轉換過程中,我們提升了搜索速度,大幅度減少了搜索架構所需的服務器數量,避免了昂貴的軟件許可費用,增強了平臺的穩定性,從先前依賴搜索服務提供商的外部主導轉向內部的搜索自主創新。
當時我們并沒有意識到搜索自主創新所帶來的附加價值。我們已經能夠開發出一整套全新的搜索應用產品,包含關鍵詞搜索、語義搜索、大數據分析及實時推薦引擎。我們將Solr作為可擴展的搜索架構,一小時內通過數百臺服務器處理數十億級的文檔與數百萬級的查詢請求。我們進入了靈活擴展的云服務時代,在數據爆炸中尋求數據的社會意義與價值。Solr讓我們有能力解決迎頭而來的挑戰。
當Manning出版社找到我談《Solr實戰》一書的寫作事宜時,我猶豫了,因為我清楚這是一項艱巨的任務。我提出一個要求:需要一位得力的合作者,而TimothyPotter正是合適的人選。Tim擁有多年Lucene和Solr搜索方案的開發經驗。他利用Solr和其他大數據前沿技術,在社交數據的文本分析系統構建與實時分析解決方案方面有著豐富經驗。多年來,我倆都得到過Solr社區的諸多幫助。當得知開源社區確實需要一本案例驅動的Solr指南時,Tim和我很高興能撰寫《Solr實戰》這本書,為下一代搜索工程師提供幫助。這本書是五年前我們開始接觸Solr時希望看到的,不論你是剛開始學習Solr,還是需要補充搜索知識,希望這本書能夠對你有幫助。
致謝
與Solr一樣,這本書的問世離不開廣大開源社區成員的支持,在此對他們表示感謝。
?Lucene/Solr提交者不但能編寫令人驚嘆的代碼,還能提供寶貴的專業知識和建議,同時又能對社區新成員保持足夠的耐心。
?感謝Lucene/Solr社區的活躍成員積極貢獻代碼、更新Wiki