-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

相關性搜索:利用Solr與Elasticsearch創建智能應用

( 簡體 字)
作者:莫映,蔡宇飛,殷智勇類別:1. -> 程式設計 -> 搜索引擎
譯者:
出版社:電子工業出版社相關性搜索:利用Solr與Elasticsearch創建智能應用 3dWoo書號: 47799
詢問書籍請說出此書號!

缺書
NT售價: 495

出版日:10/1/2017
頁數:392
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787121327216
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

譯者序

與本書結緣還要追溯到一年前。當時正值團隊啟動新產品的研發,需要一款查詢性能優良的 NoSQL DB作為數據存儲方案。在考察了包括 Elasticsearch、Solr、 Mongo、Cassandra等一系列 NoSQL DB之后,我們最終從實際需求出發,選擇了與產品功能契合度更高的 Elasticsearch。于是大家開始了對 Elasticsearch從零起步的探索。不過,在閱讀了 Elasticsearch的大量官方文檔之后,大家發現,雖然通過文檔的查閱可以了解 Elasticsearch諸多特性的使用方法,但是這種工具書式的平鋪直敘無法將知識有機地聯系起來,形成系統而立體的認知。并且,在閱讀官方文檔的過程中我們也發現,自己對不少搜索相關的基礎概念還不甚了解,于是只能借助于網絡上搜到的一些支離破碎的快餐資源來補充營養。
為了解決這一問題,大家覺得團隊成員們迫切需要一本良師益友式的專業書籍,它既能系統地介紹搜索的相關知識,又能結合當下流行的搜索引擎框架,做到理論與實踐相結合。恰巧,電子工業出版社計算機出版分社的許艷老師聯系到了我們,商討一本剛從 Manning出版社引進的外版書籍的翻譯工作,該書正是以 Elasticsearch和 Solr為背景介紹相關性搜索的。而且,此書引進時剛剛面世不久,在亞馬遜上甚至還沒有開始售賣,因此所涉內容的時效性非常之高,正好是團隊眼下急需的學習資源。于是,幾位同事商量之后,覺得在學習之余,如果順手將其譯成中文,以惠及更多的業內同行,不失為一件利人利己的好事。故而,才有了讀者眼前的這本中文版圖書。
遇到本書是譯者的幸運。書中圍繞相關性搜索這一主題,全面系統地介紹了該領域的方方面面:從搜索引擎的基礎知識,到相關性搜索的主要技術,再到各種高階議題,直到當下前沿領域的研究成果,凡此種種,不一而足。兩位作者通過樸實細膩的筆觸,清晰無誤的語言,循序漸進地將我們帶入了相關性搜索的神奇世界。這里沒有高深莫測的晦澀理論,只有生動有趣的示例講解。值得一提的是,全書各章所選的示例多以構建影片搜索應用這一任務為背景,一以貫之,精挑細選。通過來自 The Movie Database(TMDB)的大量真實影片數據,為讀者構建出了一個個實際可運行的搜索示例。其中,以經典系列影片“星際迷航”為主題的影片搜索應用,就在本書的前后多個章節中頻頻出現,足見作者構思精巧,用心良苦。讀完本書,再讀 Elasticsearch或 Solr的有關文檔或書籍時,其中內容無一不有似曾相識的感覺;查閱其他介紹相關性搜索的文章,也有一種“一覽眾山小”的感覺。而面對現實生活中的各種應用,以及我們自己研發的產品,不禁讓人聯想,如果將書中所學應用其中,想必一定能畫龍點睛,為之增色不少。
本書的翻譯過程持續了將近十個月,中文版的字里行間都飽含了幾位譯者的辛勤汗水。回顧往昔,多艱之旅,歷歷在目,譯稿最終得以成功付梓,實屬不易。翻譯過程中,從初譯到終稿,每一章每一節基本都要經過反復推敲與琢磨至五六遍以上。因為是多人翻譯,所以為了保證全書行文風格的統一,最后還進行了一次全面細致的統稿,幾位譯者都為此投入了極大的精力和時間。大家已經記不清有多少個日夜,當家人都已進入夢鄉,自己卻還在燈下埋首伏案;有多少個周末,把孩子托付給愛人照料,自己卻在一旁奮筆疾書……
本書的翻譯也是一次感恩之旅。感謝家人和朋友,沒有他們一直以來的支持就不會有本書中文版的問世。感謝莫映的夫人李唯一女士,作為本書的首位讀者,每每譯稿新鮮出爐,都會經過她的耐心初校,以讀者的視角為我們提出諸多中肯的修改建議。感謝智勇的家人,本書翻譯之初正值智勇千金呱呱墜地,家人的理解和支持是這位新晉奶爸最大的前進動力。感謝宇飛的愛女,小小年紀就善解人意,能夠體諒媽媽因為工作而少了與之相伴的時間。還要感謝博文視點的許艷老師,為我們牽線搭橋,感謝責編劉舫老師,為本書的后期審校盡心盡力。也要感謝我們這幾位譯者彼此間的相互扶持。大家利用各自的業余時間,以極大的熱情投入到翻譯工作中,默契配合,一路走來。當然,更應感謝本書的兩位原作者 Doug Turnbull先生和 John Berryman先生,他們的睿智與經驗成就了本書原作的好口碑。
最后,希望中文版的面世,不負原作的美譽,以及各位讀者的厚望!
中文版譯者2017年 8月于北京,晴耕書齋


推薦序

在過去十年里,搜索已經變得無處不在 —關鍵字搜索框已經演變成查找數據和瀏覽大多數網站及應用的事實上的標準用戶界面。與此同時,對大多數組織來說,若非被嚴重忽視,要想提供真正具有相關性的搜索體驗一直以來都絕非易事。
強大的開源技術已經能做到在幾乎零編碼的情況下(如 Apache Solr和 Elasticsearch),以分布式的、高度可伸縮的方式,實現高效運行和功能豐富的搜索(如 Apache Lucene)。這為幾乎所有的開發人員在大數據時代建立起一個“在一般意義上相關( generally relevant)”的實時搜索引擎提供了必要的基礎架構。隨著搜索在基礎架構方面有越來越多的難題得到了解決,加之解決方案的商品化進程,競爭的差異已經從如何提供快速、可伸縮的搜索,轉變成如何針對用戶的信息需求提供最為相關的匹配。換言之,提供“在一般意義上相關”的結果已經遠遠不夠了 —谷歌以及其他頂級的搜索引擎現在已經把用戶培養成為這樣一種群體,他們期望搜索應用幾乎能讀懂自己內心的想法。本書所討論的,就是我們如何更加積極地朝著理解用戶意圖的方向去努力。
Doug Turnbull 和 John Berryman是兩位經驗豐富的搜索和相關性領域的專家,我認識他們已經很多年了,大家時常會在出席搜索大會時遇到。我還能回憶起與他們一起討論的美好時光,我們共同探討了如何解決搜索相關性、推薦和個性化方面的一些世界級難題。沒有人會比我更加欣喜地看到他們將自己獨特的專業知識融入這本書中—這是我讀過的最好的、最引人入勝的技術書籍之一。
相關性調優是一大難題 —它經常被誤解,而且當出現錯誤時,往往不會立即顯現出來。為了識別出有問題的模式,我們通常需要看到許多錯誤的樣例才行,并且在沒有真正看到結果顯示的情況下,要想知道什么才是更好的調優結果往往很困難。遺憾的是,通常一個搜索系統直到被部署到生產環境之后,組織才開始意識到默認提供的相關性和真實的、受領域驅動的、個性化匹配之間存在的差距。
不僅如此,那些處理相關性所需的技能(如領域專長、特征工程、機器學習、本體理論、用戶測試、自然語言處理等)與那些構建和維護可擴展的基礎架構所需的技能(如分布式系統、數據結構、性能和并發、硬件利用率、網絡傳輸和通信等)也是非常不同的。相關性技術工程師這一角色在許多組織中幾乎完全缺失,從而給我們留下了許多未曾發掘的潛力,可以營造出真正讓用戶滿意、并顯著推動公司發展的搜索體驗。
從手動輸入關鍵字進行搜索到完全自動化的推薦,這一范圍內的各種不同程度的個性化,也給我們帶來了許多機會,可以為每一位用戶的特定需求提供相關性匹配。本書作者相當出色地解釋了對搜索特征或信號進行建模時各種方法間的細微差別,從而充分利用了這一范圍內的各種不同程度的個性化。掌握了本書中介紹的技術,我們就可以很好地勝任相關性技術工程師的角色,并能夠解決在創建真正個性化的相關搜索體驗時遇到的許多最具挑戰性的問題。
Trey Grainger Solr in Action一書的作者Lucidworks技術部高級副總裁

前言

John和我是在共同為 OpenSource Connections(OSC)做咨詢工作、幫助客戶解決棘手的搜索問題時認識的。我們有時一起診斷性能問題(好讓系統跑得更快),有時幫助構建搜索應用。所有項目都有一系列衡量成功與否的簡單指標:系統運行更快了嗎?應用開發完成了嗎?但是,搜索相關性并不遵循這些規則。而且從谷歌時代成長起來的用戶是不會容忍“還算湊合”這樣的搜索的。他們想要的是“絕頂聰明”的搜索。他們希望搜索能夠優先考慮其所關心的條件標準,而不是像搜索引擎通常那樣,盲目地去猜測相關性。就像飛蛾被火焰所吸引一樣,我們都被這一難題深深吸引了。而且正如所謂的飛蛾那樣,我們也常常發現自己是在“撲火”。經過這些慘痛的教訓,我們堅持了下來并且得到了成長,在我們最初認為極其困難的任務上取得了成功。在此期間,我們在 OSC的博客上也看到了同樣的心聲。我們意識到有關搜索相關性的問題被記錄下來的文字少之又少。于是,我們提出了諸如測試驅動相關性(test driven relevancy)這樣的觀點。我們記錄下了自己心中的困惑、遇到的問題,以及取得的成功。我們一起試驗了機器學習的各種方法,比如潛在語義分析( latent semantic analysis)。我們研究了 Lucene的內部機制并探索了通過構建自定義搜索組件來解決實際問題的相關技術。我們還開始了對信息檢索的研究。隨著我們所掌握的解決疑難問題的技術越來越多,我們也持續不斷地將它們記錄為文字。然而,博客有其自身的局限性。 John和我一直希望以書的形式更加系統地闡明我們的觀點。幸運的是,我們經歷了一連串有趣的事情,機會往往就會自動找上門來。我在一個本地的技術交流會上與 Andrew Montalenti一起做了一個關于 Python并發的演講。因為 Andrew在 PyCon上做過這次演講, Manning就給 Andrew打電話來討論寫一本關于 Python并發的書。 Andrew說他對寫書不感興趣,但或許他的聯合演講人 Doug會感興趣。
可惜我對寫一本關于 Python并發的書也不感興趣,但我的確有寫另一本書的想法。帶著這個想法我找到了 John,經過幾番談話之后,我們共同提出了一個非常激動人心的出書提議—接下來的事大家都知道了!
大約在兩年前,我們與 Manning通了那次意義重大的電話。就像是在坐過山車一樣,光陰荏苒,伴隨著本書的寫作,我們的生活也經歷了一系列重大的變遷。我們兩個人的家庭都增添了小寶寶。我開啟了一項相關性的咨詢業務。 John換了工作,成為 Eventbrite的常駐搜索專家。但我們還是無法拒絕繼續為這個讓人著迷的話題撰寫文章。
你會發現本書不同于其他技術類的書籍,它不是某項技術的功能羅列。它更像是一張地圖,指引著我們走出多年的痛苦,去解決那些沒有現成答案的難題。換句話說,我們已經走出了搜索相關性的沙漠,發現了許多綠洲,并且學會了如何躲避沙人和帝國突擊隊。
我們向大家展示這張穿越沙漠的地圖,這樣大家就不會像我們那樣迷失方向。現在,請原諒,我們要找一處最近的海灘來小憩一會兒了……
Doug Turnbull

致謝

在開始撰寫本書的幾周前,我們兩家都迎來了小寶寶。我們要把最誠摯的感謝和愛意送給我們的愛人, Khara Turnbull和 Kumiko Berryman。我們把連續數個周末的時間都用來寫書,而她們也都堅持了下來 —在此期間, Khara完成了她自己的一本書,Kumiko成功地經歷了一次長途越野和房屋出售。現在是時候放個長假了!
本書的成功付梓也離不開 OpenSource Connections的創始人 Eric Pugh。作為我們的“老板”,是他把我們推到了寫作、演講和解惑的聚光燈下。作為一位領導者, Eric能夠讓你的熱情成為他的熱情。如果不是 Eric摘掉“輔輪”(有時甚至堅持“獨輪”),我們就不會意識到,自己竟然能勝任寫作或解惑的工作。 Eric告訴我們,每個人都可以成為思想領袖,包括我們自己。
感謝 TMDB提供的數據和支持。我們曾經花費大把的時間試圖找到理想的數據集。TMDB(http://themoviedb.org)不僅提供了豐富的搜索數據集,而且在我們遇到程序錯誤和問題的時候(通常是我們自己的代碼里的錯誤),TMDB也能為我們以及我們的早期讀者提供支持。特別要感謝的是 Travis Bell,他總是及時回復我們的問題和郵件。
寫書是一項團隊活動,我們要感謝 Manning出版社本書制作團隊中的每一位成員: Marina Michaels,我們的開發編輯; Aaron Colcord,技術開發編輯; Valentin Crettaz,技術校對; Frank Pohlmann和 Mike Stephens,策劃編輯;還有負責營銷的 Candace Gillhoolley。
我們也要感謝很多參與審稿的朋友,他們閱讀了本書最初的書稿,并提出了許多有益的建議,包括 John Guthrie,Martin Beer,Arthur Zubarev,Elman Krinker, Amit Lamba,Marc-Oliver Scheele,Ian Stirk,Joseph Wang,Stuart Woodward, Ursin Stauss,Russ Cam,Michael Fink,Gregor Zurowski,Dimitrios Kouzis-Loukas,Jeremy Gailor和 Keith Webster。
另外要感謝 Andrew Montalenti,他為我們與 Manning建立了聯系。還要感謝 Shay Banon的幫助,他是 Elasticsearch的創始人,坦率地說,他是一個很和藹的人。感謝我們的同事, Trey Grainger,Matt Overstreet,Rena Morse,David Smiley, Grant Ingersoll,Yonik Seeley,Rene Kriegler,Peter Dixon-Moses,Charlie Hull和 Drew Farris,感謝這些年來與我們在搜索和相關性方面的這么多精彩討論。還要特別感謝 Trey,他為我們這本書寫了推薦序。
感謝每一位家人對我們的支持。尤其是我們的孩子們: Megume Berryman,Ian Turnbull和 Murray Turnbull。感謝我們在 OpenSource Connections和 Eventbrite上的“工作大家庭”,讓我們能夠把大量精力投入到本書的寫作上。

關于本書

本書將告訴大家,在響應用戶的搜索時要給出用戶滿意和認可的內容。我們將學習如何根據搜索條件,而不是對搜索引擎的神秘猜測,來嚴格控制對搜索結果的排名。我們會簡要介紹深入定制 Solr或 Elasticsearch相關性排名的方法,以及如何采取措施幫助大家發掘相關性對應用而言的意義。
誰應該閱讀本書
本書的目標讀者是那些渴望了解為什么搜索引擎無法“領會”用戶搜索意圖的 Solr或 Elasticsearch開發人員。對搜索引擎至少有基本了解的讀者,可以通過本書將他們的技能提升到更高的層次。雖然這是一本技術方面的書籍,但從組織機構和產品戰略的角度來看,它的大部分內容都是圍繞相關性展開的,因此也適合于產品經理、內容戰略的制訂者、市場營銷人員,或專注搜索的領域專家閱讀。
本書是如何組織的
本書首先介紹了相關技術的基礎知識,然后逐步上升到定義和解決搜索相關性問題時我們所要面對的產品策略和文化議題,最后介紹了如何實施個性化搜索、語義搜索以及推薦。
第 1章從討論相關性問題開始。問題涉及的領域包括網絡搜索、電子商務,以及專家搜索等。本章討論了學術界對于我們在相關性領域所做的嘗試都提供了什么樣的支持。最后,我們簡要介紹了本書在解決相關性問題時所采取的技術策略。
第 2章對 Lucene的核心數據結構及其算法做了快速回顧,因為它們與相關性是緊密關聯的。我們將會看到,為了尋找相關性內容,基于 Lucene的搜索為我們提供了一個如此令人難以置信的框架。
第 3章告訴大家如何對相關性進行調試。在第 2章介紹的數據結構和算法不起作用的時候,我們就需要拿出自己的“工具箱”,弄清楚搜索在哪里出了問題。
第 4章展示了如何利用搜索引擎的分析流程將內容和搜索分解成可描述的特征。這一基本技巧可以讓我們學會如何利用分析手段讓所有內容都能被找到。
第 5章開始討論針對多個字段的查詢策略。在本章中,我們會告訴大家如何構造查詢語句,有針對性地去度量那些在搜索階段對用戶而言至關重要的排名因素。
第 6章繼續我們有關查詢策略的討論。在這一章我們重點關注的是以詞為中心(term-centric)的技術,以及相應的搜索策略,以支持用戶對相關性的樸素理解。
第 7章為大家展示了評價調整( score-shaping)技術,比如放大( boosting)和過濾( .ltering)。我們時常需要突出近期產生的內容、高利潤率的產品,或者距離較近的位置,以此來對搜索加以控制。
第 8章為大家展示了一系列可以幫助用戶找到相關性內容的替代方法。有時,當相關性排名效果不佳的時候,一些 UI組件,比如可供瀏覽的切面( browsable facets)、自動補全( autocomplete),以及高亮顯示( highlighting),也許用這些方法將用戶引入正途更為簡單。
第 9章我們構建了一個完整的以相關性為目標的搜索應用,本章將會為大家奉上具有專業眼光的 Yowling。既然已經掌握了相關性技術工程師所具備的一系列技能,本章我們將從頭至尾見證一次完整的產品開發流程。
第 10章從產品戰略的角度上升到了一個更高的層面,其目的在于關注文化和組織機構方面的一些因素。一個關注搜索的組織是如何確定何謂相關的呢?我們會看到,一個組織必須實現快速而準確的反饋回路,才能正確引導相關性技術工程師的研發工作。
第 11章將我們的視野拓展到了搜索引擎以外的地方。本章會向大家介紹機器學習、個性化搜索,以及語義搜索是如何協同工作,一起來提高搜索引擎的相關性排名的。
附錄 A帶領大家按照我們曾經走過的流程,利用 The Movie Database(TMDB) API一步步將本書所用的數據載入 Elasticsearch中。
附錄 B通過對照 Elasticsearch和 Solr之間的相關性功能,指導 Solr讀者閱讀本書。

關于代碼
本書包含了許多源代碼的例子,形式包括帶編號的清單,以及普通的文本行。對于這兩種情況,源代碼都以等寬字體進行了格式化,從而將其與普通文本進行區分。有時代碼也會以粗體顯示,目的是為了突出相對于本章前面步驟的變化,比如當一個新功能被加入已有的代碼行時。
在許多情況下,最初的源代碼都已經被重新進行了格式化處理;我們加入了換行并修改了縮進,目的是為了能夠適應本書的可用版面。另外,當我們在文中對代碼做了解釋之后,源代碼中的注釋通常會被從清單中移除。許多代碼清單都會伴有一定的注解,旨在突出顯示某些重要的概念。
這些例子都已在 Elasticsearch 2.0和 Python 2.7下測試通過。
大家可以在 Manning的網站上以及本書的 GitHub庫中找到第 3章至第 9章的代碼。為了便于試驗,這些例子都是用 iPython Notebook/Jupyter編寫的。 README文件詳細說明了運行代碼所需的準備工作。
作者在線
購買本書的讀者可以免費訪問一個由 Manning出版社運作的私有論壇,在那里你可以對本書發表評論、詢問技術問題,并得到作者和其他用戶的幫助。要訪問和訂閱該論壇,請在瀏覽器中打開 。該網頁提供的信息包括:如何在成功注冊之后加入論壇,你可以得到什么樣的幫助,以及論壇內的行為規范。
Manning出版社承諾為讀者提供這樣一個場所,在那里不同讀者之間,以及讀者和作者之間可以建立起有意義的對話。本書作者并不承諾任何具體程度的參與,他們對本書論壇的貢獻是自愿的(無償的)。我們建議大家試著問一些具有挑戰性的問題,以激起他們的興趣!
本書一經出版,就可以通過出版社的網站訪問作者在線論壇和以往討論的存檔。
內容簡介:

本書揭開了相關性搜索的神秘面紗,告訴大家如何將Elasticsearch 或Solr 這樣的搜索引擎作為可編程的相關性框架,從而表達業務排名規則。從這本書中你可學會如何結合各種外部數據源、分類方法以及文本分析手段對相關性進行編程,以滿足用戶的個性化需求,將令人滿意的搜索結果呈現給用戶。此外,相關性搜索也需要一定的軟性技能。本書還將告訴讀者怎樣與業務人員協作, 為業務找到正確的相關性需求,從而在搜索產品的整個研發生命周期內,實現相關性改進的良性循環。本書介紹了搜索引擎的基本原理,及相關性搜索的調試技術,用大量實例的方式詳述了搜索引擎的諸多特性,以形成一整套針對相關性搜索的系統化方法,并倡導致力于提高搜索質量的企業文化。

目錄:

第1章 搜索的相關性問題. ...1

1.1 我們的目標:掌握相關性技術研發的技能 .....................2

1.2 為什么搜索的相關性如此之難 .......3

1.2.1 什么是具備“相關性”的搜索結果 .....................4

1.2.2 搜索:沒有銀彈 ...................6

1.3 來自相關性研究的啟示 ...................7

1.3.1 信息檢索 ...............................7

1.3.2 能否利用信息檢索解決相關性問題 .....................9

1.4 如何解決相關性 ............................. 11

1.5 不只是技術:管理、協作與反饋 .13

1.6 本章小結 .......16

第2章 搜索—幕后揭秘17

2.1 搜索101 .........18

2.1.1 什么是搜索文檔 .................19

2.1.2 對內容進行搜索 .................19

2.1.3 通過搜索來探索內容 .........21

2.1.4 獲取進入搜索引擎的內容 .21

2.2 搜索引擎的數據結構 .....................23

2.2.1 倒排索引 .............................23

2.2.2 倒排索引的其他內容 .........25

2.3 對內容進行索引:提取、充實、分析和索引 ...............26

2.3.1 將內容提取為文檔 .............28

2.3.2 充實文檔以清理、強化與合并數據 ...................28

2.3.3 執行分析 .............................29

2.3.4 索引 ...33

2.4 文檔的搜索和獲取 .........................34

2.4.1 布爾搜索: AND/OR/NOT 34

2.4.2 基于 Lucene搜索的布爾查詢(MUST/MUST_NOT/SHOULD) ......36
2.4.3 位置和短語匹配 .................37

2.4.4 助力用戶瀏覽:過濾、切面和聚合 ...................38

2.4.5 排序、結果排名,以及相關性 ...........................39

2.5 本章小結 .......42

第3章 調試我們的第一個相關性問題. .................43

3.1 Solr和Elasticsearch的應用:基于Elasticsearch的例子 ..44

3.2 最了不起的數據集:TMDB .........45

3.3 用Python語言編寫的例子 ..............46

3.4 第一個搜索應用 .............................46

3.4.1 針對 TMDB Elasticsearch索引的第一次搜索 ...49

3.5 調試查詢匹配 .................................52

3.5.1 檢查底層查詢策略 .............53

3.5.2 剖析查詢解析 .....................54

3.5.3 調試分析,解決匹配問題 .55

3.5.4 比較查詢條件和倒排索引 .58

3.5.5 通過修改分析器來修正我們的匹配 ...................59

3.6 調試排名 .......62

3.6.1 利用 Lucene的解釋功能來剖析相關性評價 .....63

3.6.2 向量空間模型、相關性解釋信息和我們 ...........68

3.6.3 向量空間模型在實踐中的注意事項 ...................71

3.6.4 通過對匹配的評價來度量相關性 .......................72

3.6.5 用 TF×IDF計算權重 ........74

3.6.6 謊言、該死的謊言和相似度 ...............................75

3.6.7 決定搜索詞重要性的因素 .77

3.6.8 解決 Space Jam和 alien的排名問題 ..................78

3.7 問題解決了?工作永遠做不完! .80

3.8 本章小結 .......81

第4章 駕馭token. ..............83

4.1 將token作為文檔特征 ....................84

4.1.1 匹配的流程 .........................85

4.1.2 token,不只是單詞 ............85

4.2 控制查準率和查全率 .....................86

4.2.1 查準率和查全率的例子 .....86

4.2.2 查準率或查全率的分析 .....89

4.2.3 一味提高查全率 .................93

4.3 查準率和查全率—讓魚和熊掌兼得 ...........................95

4.3.1 評價單一字段中特征的強度 ...............................95

4.3.2 超越 TF × IDF的評價:多搜索詞與多字段 ....99

4.4 分析策略 .....100

4.4.1 處理分隔符 .......................100

4.4.2 捕獲同義詞的語義 ...........103

4.4.3 在搜索中為專指性建模 ...107

4.4.4 利用同義詞為專指性建模 .................................107

4.4.5 利用路徑為專指性建模 ... 110

4.4.6 對整個世界分詞 ............... 112

4.4.7 對整數分詞 ....................... 112

4.4.8 對地理數據分詞 ............... 113

4.4.9 對歌曲分詞 ....................... 115

4.5 本章小結 ..... 118

第5章 多字段搜索基礎...119

5.1 信號及信號建模 ...........................121

5.1.1 什么是信號 .......................121

5.1.2 從源數據模型開始 ...........122

5.1.3 實現信號 ...........................125

5.1.4 信號建模:為數據的相關性建模 .....................126

5.2 TMDB—搜索,人類最后的邊疆 .............................127

5.2.1 違反基本法則 ...................129

5.2.2 讓嵌套文檔扁平化 ...........129

5.3 在以字段為中心的搜索中給信號建模 .........................132

5.3.1 從 best_.elds開始 ............136

5.3.2 控制搜索結果中的字段偏好 .............................139

5.3.3 可以使用信號更精準的 best_.elds嗎 ..............141

5.3.4 讓失敗者分享榮耀:為 best_.elds校準 ..........144

5.3.5 利用 most_.elds統計多個信號 ........................147

5.3.6 在 most_.elds中縮放信號 ................................149

5.3.7 什么時候其他匹配才無關緊要 .........................151

5.3.8 有關 most_.elds的結論是什么 ........................152

5.4 本章小結 .....153

第6章 以詞為中心的搜索. .................................154

6.1 什么是以詞為中心的搜索 ...........155

6.2 我們為什么需要以詞為中心的搜索 .............................157

6.2.1 獵尋“白化象” .................157

6.2.2 在“星際迷航”的例子中尋找白化象問題 .....160

6.2.3 避免信號沖突 ...................162

6.2.4 理解信號沖突的機理 .......163

6.3 完成第一個以詞為中心的搜索 ...165

6.3.1 使用以詞為中心的排名函數 .............................166

6.3.2 運行以詞為中心的查詢解析器(深入底層) ...169

6.3.3 理解字段同步 ...................170

6.3.4 字段同步和信號建模 .......171

6.3.5 查詢解析器和信號沖突 ...172

6.3.6 對以詞為中心的搜索進行調優 .........................174

6.4 在以詞為中心的搜索中解決信號沖突 .........................176

6.4.1 將字段合并成自定義全字段 .............................177

6.4.2 利用 cross_.elds解決信號沖突........................181

6.5 結合以字段為中心和以詞為中心的策略:魚與熊掌兼得 ...........................183

6.5.1 將“相似字段”分到一組 .................................183

6.5.2 理解相似字段的局限 .......185

6.5.3 將貪婪的簡單搜索和保守的放大器結合起來 .186

6.5.4 以詞為中心與以字段為中心,查準率與查全率 ...............................189

6.5.5 考慮過濾、放大,以及重新排名 .....................190

6.6 本章小結 .....190

第7章 調整相關性函數...192

7.1 何謂評價調整 ...............................193

7.2 放大:通過突出結果來實現調整 .................................195

7.2.1 放大:最后的邊疆 ...........195

7.2.2 放大時—選擇加法運算還是乘法運算,布爾查詢還是函數查詢? .................................197
7.2.3 選擇第一扇門:利用布爾查詢進行加法放大 .199

7.2.4 選擇第二扇門:利用數學運算進行排名的函數查詢 .......................202

7.2.5 函數查詢實踐:簡單的乘法放大 .....................204

7.2.6 放大處理的基礎:信號,處處是信號 .............206

7.3 過濾:通過排除的方法對結果進行調整 .....................206

7.4 滿足業務需求的評價調整策略 ...208

7.4.1 搜索所有影片 ...................209

7.4.2 對放大信號進行建模 ....... 211

7.4.3 構造排名函數:增加具有較高價值的層級 .....215

7.4.4 利用函數查詢對具有較高價值的層級進行評價 ...............................219

7.4.5 忽略 TF × IDF .................221

7.4.6 捕捉綜合質量指標 ...........222

7.4.7 達成用戶的時效性目標 ...224

7.4.8 結合函數查詢 ...................227

7.4.9 把一切聯系起來 ...............230

7.5 本章小結 .....230

第8章 提供相關性反饋...232

8.1 搜索框中的相關性反饋 ...............234

8.1.1 利用“即輸即搜”提供即時結果 .....................234

8.1.2 利用“搜索補全”幫助用戶找到最佳查詢 .....236

8.1.3 利用搜索建議來修正輸入和拼寫錯誤 .............244

8.2 瀏覽期間的相關性反饋 ...............247

8.2.1 構建基于切面的瀏覽 .......249

8.2.2 提供面包線導航 ...............251

8.2.3 選擇其他的結果排序方式 .................................252

8.3 搜索結果清單中的相關性反饋 ...253

8.3.1 什么信息應該出現在搜索結果中 .....................254

8.3.2 通過文本片段與高亮提供相關性反饋 .............255

8.3.3 對相似文檔分組 ...............259

8.3.4 在用戶搜不到結果時給予幫助 .........................261

8.4 本章小結 .....262

第9章 設計以相關性為核心的搜索應用............263

9.1 Yowl!一個絕佳的新起點 ..........264

9.2 信息和需求的收集 .......................265

9.2.1 理解用戶及其信息需求 ...265

9.2.2 理解業務需求 ...................267

9.2.3 找出必要及可用的信息 ...268

9.3 搜索應用的設計 ...........................269

9.3.1 將用戶體驗可視化 ...........270

9.3.2 定義字段和模型的信號 ...273

9.3.3 信號的組合與平衡 ...........274

9.4 部署、監控和改進 .......................286

9.4.1 監控 .286

9.4.2 找出問題并解決它們 .......288

9.5 知道什么是恰到好處 ...................289

9.6 本章小結 .....290

第10章 以相關性為核心的企業. ........................292

10.1 反饋:以相關性為核心的企業所依賴的基石 ...........294

10.2 為什么以用戶為中心的文化比數據驅動的文化更重要 .............................296

10.3 無視相關性的天馬行空 .............299

10.4 相關性反饋的覺醒:領域專家和專業用戶 ...............301

10.5 相關性反饋的成長:內容管理 .303

10.5.1 內容管理員的角色 .......304

10.5.2 與內容管理員缺乏交流的風險 .....................306

10.6 讓相關性更加流暢:工程師/內容管理員的結對 ......307

10.7 讓相關性加速:測試驅動的相關性 ...........................309

10.7.1 理解測試驅動的相關性 .................................309

10.7.2 使用帶用戶行為數據的測試驅動相關性 .....312

10.8 超越測試驅動的相關性:學習排序 ...........................313

10.9 本章小結 ...315

第11章 語義和個性化搜索. ...............................316

11.1 基于用戶概況的個性化搜索 .....318

11.1.1 收集用戶的概況信息 ...319

11.1.2 將概要信息與文檔索引緊密關聯 .................319

11.2 基于用戶行為的個性化搜索 .....320

11.2.1 引入協同過濾 ...............321

11.2.2 使用共現計數的基本協同過濾算法 .............322

11.2.3 將用戶行為信息與文檔索引緊密關聯 .........327

11.3 構建概念性搜索的基本方法 .....332

11.3.1 構建概念性信號 ...........333

11.3.2 利用同義詞對內容進行擴充 .........................334

11.4 利用機器學習來構建概念性搜索 ...............................336

11.4.1 概念性搜索中短語的重要性 .........................338

11.5 連接個性化搜索與概念性搜索 .338

11.6 推薦是一種廣義的搜索 .............339

11.6.1 用推薦代替搜索 ...........341

11.7 祝愿大家有一個美好的相關性搜索之旅 ...................342

11.8 本章小結 ...343

附錄A 直接根據TMDB建立索引. ...............................344

附錄B Solr讀者指南.......351
序: