發表於2024-11-22
關鍵字搜索框已經演變成查找數據和瀏覽大多數網站及應用的事實上的標準用戶界麵。“聰明”的站內搜索引擎能給用戶想要的結果,幫助你留住用戶。
本書所講的“相關性”是一門交叉學科,涵蓋特徵工程、機器學習、本體理論、用戶測試、自然語言處理,還要與業務緊密結閤。作者用一個在影片庫中搜索想看的電影為例,係統展現瞭相關的技術和知識。
《相關性搜索:利用Solr與Elasticsearch創建智能應用》揭開瞭相關性搜索的神秘麵紗,告訴大傢如何將 Elasticsearch與 Solr這樣的搜索引擎作為可編程的相關性框架,從而錶達業務排名規則。從這《相關性搜索:利用Solr與Elasticsearch創建智能應用》中你可學會如何結閤各種外部數據源、分類方法以及文本分析手段對相關性進行編程,以滿足用戶的個性化需求,將令人滿意的搜索結果呈現給用戶。此外,相關性搜索也需要一定的軟性技能《相關性搜索:利用Solr與Elasticsearch創建智能應用》還將告訴讀者怎樣與業務人員協作,為業務找到正確的相關性需求,從而在搜索産品的整個研發生命周期內,實現相關性改進的良性循環。 本書介紹瞭搜索引擎的基本原理,及相關性搜索的調試技術,用大量實例的方式詳述瞭搜索引擎的諸多特性,以形成一整套針對相關性搜索的係統化方法,並倡導緻力於提高搜索質量的企業文化。《相關性搜索:利用Solr與Elasticsearch創建智能應用》適用於想利用 Elasticsearch或 Solr嘗試構建智能搜索應用的開發人員。
Doug Turnbull 在OpenSource Connections 上領導著一項搜索相關性的谘詢業務,在那裏他經常發錶觀點和更新博客。Doug 利用各種搜索和自然語言處理技術(NLP)為多個領域的客戶構建語義豐富的相關性搜索體驗。
John Berryman 的第一份職業是航空工程師,但在航空領域工作瞭幾年之後,他發現編寫程序或解決數學難題纔是他喜歡的工作。後來,John 撇下瞭飛機和衛星,開始全職工作於軟件開發、基礎架構,以及搜索技術領域。目前,John 供職於Eventbrite,幫助利用Elasticsearch 構建事件活動的發現、搜索及推薦。
譯者
莫映,IBM中國軟件開發實驗室顧問軟件開發工程師,具有超過10年的軟件開發與設計經驗,目前從事IBM社交商務軟件的研發工作。一直關注社交網絡的應用與社交技術的運用。同時也積極活躍於IBM內部以及外部的各種技術社區之中。
蔡宇飛,IBM中國軟件開發實驗室軟件開發工程師,目前從事IBM社交商務軟件的研發工作,對雲技算、大數據有濃厚興趣。
殷智勇,IBM中國軟件開發實驗室IBM Domino高級軟件開發工程師,對社會化協作軟件、大數據搜索等領域較為關注,並有較為深入的研究。
第1章 搜索的相關性問題
1.1 我們的目標:掌握相關性技術研發的技能
1.2 為什麼搜索的相關性如此之難
1.2.1 什麼是具備“相關性”的搜索結果
1.2.2 搜索:沒有銀彈
1.3 來自相關性研究的啓示
1.3.1 信息檢索
1.3.2 能否利用信息檢索解決相關性問題
1.4 如何解決相關性
1.5 不隻是技術:管理、協作與反饋
1.6 本章小結
第2章 搜索—幕後揭秘
2.1 搜索101
2.1.1 什麼是搜索文檔
2.1.2 對內容進行搜索
2.1.3 通過搜索來探索內容
2.1.4 獲取進入搜索引擎的內容
2.2 搜索引擎的數據結構
2.2.1 倒排索引
2.2.2 倒排索引的其他內容
2.3 對內容進行索引:提取、充實、分析和索引
2.3.1 將內容提取為文檔
2.3.2 充實文檔以清理、強化與閤並數據
2.3.3 執行分析
2.3.4 索引
2.4 文檔的搜索和獲取
2.4.1 布爾搜索: AND/OR/NOT
2.4.2 基於 Lucene搜索的布爾查詢(MUST/MUST_NOT/SHOULD)
2.4.3 位置和短語匹配
2.4.4 助力用戶瀏覽:過濾、切麵和聚閤
2.4.5 排序、結果排名,以及相關性
2.5 本章小結
第3章 調試我們的第一個相關性問題
3.1 Solr和Elasticsearch的應用:基於Elasticsearch的例子
3.2 最瞭不起的數據集:TMDB
3.3 用Python語言編寫的例子
3.4 第一個搜索應用
3.4.1 針對 TMDB Elasticsearch索引的第一次搜索
3.5 調試查詢匹配
3.5.1 檢查底層查詢策略
3.5.2 剖析查詢解析
3.5.3 調試分析,解決匹配問題
3.5.4 比較查詢條件和倒排索引
3.5.5 通過修改分析器來修正我們的匹配
3.6 調試排名
3.6.1 利用 Lucene的解釋功能來剖析相關性評價
3.6.2 嚮量空間模型、相關性解釋信息和我們
3.6.3 嚮量空間模型在實踐中的注意事項
3.6.4 通過對匹配的評價來度量相關性
3.6.5 用 TF×IDF計算權重
3.6.6 謊言、該死的謊言和相似度
3.6.7 決定搜索詞重要性的因素
3.6.8 解決 Space Jam和 alien的排名問題
3.7 問題解決瞭?工作永遠做不完!
3.8 本章小結
第4章 駕馭token
4.1 將token作為文檔特徵
4.1.1 匹配的流程
4.1.2 token,不隻是單詞
4.2 控製查準率和查全率
4.2.1 查準率和查全率的例子
4.2.2 查準率或查全率的分析
4.2.3 一味提高查全率
4.3 查準率和查全率—讓魚和熊掌兼得
4.3.1 評價單一字段中特徵的強度
4.3.2 超越 TF × IDF的評價:多搜索詞與多字段
4.4 分析策略
4.4.1 處理分隔符
4.4.2 捕獲同義詞的語義
4.4.3 在搜索中為專指性建模
4.4.4 利用同義詞為專指性建模
4.4.5 利用路徑為專指性建模
4.4.6 對整個世界分詞
4.4.7 對整數分詞
4.4.8 對地理數據分詞
4.4.9 對歌麯分詞
4.5 本章小結
第5章 多字段搜索基礎
5.1 信號及信號建模
5.1.1 什麼是信號
5.1.2 從源數據模型開始
5.1.3 實現信號
5.1.4 信號建模:為數據的相關性建模
5.2 TMDB—搜索,人類最後的邊疆
5.2.1 違反基本法則
5.2.2 讓嵌套文檔扁平化
5.3 在以字段為中心的搜索中給信號建模
5.3.1 從 best_.elds開始
5.3.2 控製搜索結果中的字段偏好
5.3.3 可以使用信號更精準的 best_.elds嗎
5.3.4 讓失敗者分享榮耀:為 best_.elds校準
5.3.5 利用 most_.elds統計多個信號
5.3.6 在 most_.elds中縮放信號
5.3.7 什麼時候其他匹配纔無關緊要
5.3.8 有關 most_.elds的結論是什麼
5.4 本章小結
第6章 以詞為中心的搜索
6.1 什麼是以詞為中心的搜索
6.2 我們為什麼需要以詞為中心的搜索
6.2.1 獵尋“白化象”
6.2.2 在“星際迷航”的例子中尋找白化象問題
6.2.3 避免信號衝突
6.2.4 理解信號衝突的機理
6.3 完成第一個以詞為中心的搜索
6.3.1 使用以詞為中心的排名函數
6.3.2 運行以詞為中心的查詢解析器(深入底層)
6.3.3 理解字段同步
6.3.4 字段同步和信號建模
6.3.5 查詢解析器和信號衝突
6.3.6 對以詞為中心的搜索進行調優
6.4 在以詞為中心的搜索中解決信號衝突
6.4.1 將字段閤並成自定義全字段
6.4.2 利用 cross_.elds解決信號衝突
6.5 結閤以字段為中心和以詞為中心的策略:魚與熊掌兼得
6.5.1 將“相似字段”分到一組
6.5.2 理解相似字段的局限
6.5.3 將貪婪的簡單搜索和保守的放大器結閤起來
6.5.4 以詞為中心與以字段為中心,查準率與查全率
6.5.5 考慮過濾、放大,以及重新排名
6.6 本章小結
第7章 調整相關性函數
7.1 何謂評價調整
7.2 放大:通過突齣結果來實現調整
7.2.1 放大:最後的邊疆
7.2.2 放大時—選擇加法運算還是乘法運算,布爾查詢還是函數查詢?
7.2.3 選擇第一扇門:利用布爾查詢進行加法放大
7.2.4 選擇第二扇門:利用數學運算進行排名的函數查詢
7.2.5 函數查詢實踐:簡單的乘法放大
7.2.6 放大處理的基礎:信號,處處是信號
7.3 過濾:通過排除的方法對結果進行調整
7.4 滿足業務需求的評價調整策略
7.4.1 搜索所有影片
7.4.2 對放大信號進行建模
7.4.3 構造排名函數:增加具有較高價值的層級
7.4.4 利用函數查詢對具有較高價值的層級進行評價
7.4.5 忽略 TF × IDF
7.4.6 捕捉綜閤質量指標
7.4.7 達成用戶的時效性目標
7.4.8 結閤函數查詢
7.4.9 把一切聯係起來
7.5 本章小結
第8章 提供相關性反饋
8.1 搜索框中的相關性反饋
8.1.1 利用“即輸即搜”提供即時結果
8.1.2 利用“搜索補全”幫助用戶找到最佳查詢
8.1.3 利用搜索建議來修正輸入和拼寫錯誤
8.2 瀏覽期間的相關性反饋
8.2.1 構建基於切麵的瀏覽
8.2.2 提供麵包綫導航
8.2.3 選擇其他的結果排序方式
8.3 搜索結果清單中的相關性反饋
8.3.1 什麼信息應該齣現在搜索結果中
8.3.2 通過文本片段與高亮提供相關性反饋
8.3.3 對相似文檔分組
8.3.4 在用戶搜不到結果時給予幫助
8.4 本章小結
第9章 設計以相關性為核心的搜索應用
9.1 Yowl!一個絕佳的新起點
9.2 信息和需求的收集
9.2.1 理解用戶及其信息需求
9.2.2 理解業務需求
9.2.3 找齣必要及可用的信息
9.3 搜索應用的設計
9.3.1 將用戶體驗可視化
9.3.2 定義字段和模型的信號
9.3.3 信號的組閤與平衡
9.4 部署、監控和改進
9.4.1 監控
9.4.2 找齣問題並解決它們
9.5 知道什麼是恰到好處
9.6 本章小結
第10章 以相關性為核心的企業
10.1 反饋:以相關性為核心的企業所依賴的基石
10.2 為什麼以用戶為中心的文化比數據驅動的文化更重要
10.3 無視相關性的天馬行空
10.4 相關性反饋的覺醒:領域專傢和專業用戶
10.5 相關性反饋的成長:內容管理
10.5.1 內容管理員的角色
10.5.2 與內容管理員缺乏交流的風險
10.6 讓相關性更加流暢:工程師/內容管理員的結對
10.7 讓相關性加速:測試驅動的相關性
10.7.1 理解測試驅動的相關性
10.7.2 使用帶用戶行為數據的測試驅動相關性
10.8 超越測試驅動的相關性:學習排序
10.9 本章小結
第11章 語義和個性化搜索
11.1 基於用戶概況的個性化搜索
11.1.1 收集用戶的概況信息
11.1.2 將概要信息與文檔索引緊密關聯
11.2 基於用戶行為的個性化搜索
11.2.1 引入協同過濾
11.2.2 使用共現計數的基本協同過濾算法
11.2.3 將用戶行為信息與文檔索引緊密關聯
11.3 構建概念性搜索的基本方法
11.3.1 構建概念性信號
11.3.2 利用同義詞對內容進行擴充
11.4 利用機器學習來構建概念性搜索
11.4.1 概念性搜索中短語的重要性
11.5 連接個性化搜索與概念性搜索
11.6 推薦是一種廣義的搜索
11.6.1 用推薦代替搜索
11.7 祝願大傢有一個美好的相關性搜索之旅
11.8 本章小結
附錄A 直接根據TMDB建立索引
附錄B Solr讀者指南
譯者序
與本書結緣還要追溯到一年前。當時正值團隊啓動新産品的研發,需要一款查詢性能優良的 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月於北京,晴耕書齋
序言
John和我是在共同為 OpenSource Connections(OSC)做谘詢工作、幫助客戶解決棘手的搜索問題時認識的。我們有時一起診斷性能問題(好讓係統跑得更快),有時幫助構建搜索應用。所有項目都有一係列衡量成功與否的簡單指標:係統運行更快瞭嗎?應用開發完成瞭嗎?但是,搜索相關性並不遵循這些規則。而且從榖歌時代成長起來的用戶是不會容忍“還算湊閤”這樣的搜索的。他們想要的是“絕頂聰明”的搜索。他們希望搜索能夠優先考慮其所關心的條件標準,而不是像搜索引擎通常那樣,盲目地去猜測相關性。就像飛蛾被火焰所吸引一樣,我們都被這一難題深深吸引瞭。而且正如所謂的飛蛾那樣,我們也常常發現自己是在“撲火”。經過這些慘痛的教訓,我們堅持瞭下來並且得到瞭成長,在我們最初認為極其睏難的任務上取得瞭成功。在此期間,我們在 OSC的博客上也看到瞭同樣的心聲。我們意識到有關搜索相關性的問題被記錄下來的文字少之又少。於是,我們提齣瞭諸如測試驅動相關性(test driven relevancy)這樣的觀點。我們記錄下瞭自己心中的睏惑、遇到的問題,以及取得的成功。我們一起試驗瞭機器學習的各種方法,比如潛在語義分析( latent semantic analysis)。我們研究瞭 Lucene的內部機製並探索瞭通過構建自定義搜索組件來解決實際問題的相關技術。我們還開始瞭對信息檢索的研究。隨著我們所掌握的解決疑難問題的 相關性搜索:利用Solr與Elasticsearch創建智能應用 下載 mobi epub pdf txt 電子書 格式
相關性搜索:利用Solr與Elasticsearch創建智能應用 下載 mobi pdf epub txt 電子書 格式 2024
相關性搜索:利用Solr與Elasticsearch創建智能應用 下載 mobi epub pdf 電子書不錯不錯,這本書還是不錯的,可以學習學習!
評分同事讓給帶著一起買的
評分還沒有看,過一段時間再看
評分書很好,內容就是我要的,漲知識瞭
評分書很好,內容就是我要的,漲知識瞭
評分挺好的書,質量還不錯,就是有點貴
評分很不錯的一本書,其實elasticsearch中文版的書挺少的,深入講經驗,高級搜索更少瞭。
評分書很好
評分單位購書,多人選擇的結果
相關性搜索:利用Solr與Elasticsearch創建智能應用 mobi epub pdf txt 電子書 格式下載 2024