新書推薦:
《
第十三位陪审员
》
售價:HK$
55.2
《
微观经济学(第三版)【2024诺贝尔经济学奖获奖者作品】
》
售價:HK$
159.9
《
Python贝叶斯深度学习
》
售價:HK$
91.8
《
文本的密码:社会语境中的宋代文学
》
售價:HK$
69.0
《
启微·狂骉年代:西洋赛马在中国
》
售價:HK$
80.5
《
有趣的中国古建筑
》
售價:HK$
68.8
《
十一年夏至
》
售價:HK$
78.2
《
如何打造成功的商业赛事
》
售價:HK$
91.9
|
編輯推薦: |
关键字搜索框已经演变成查找数据和浏览大多数网站及应用的事实上的标准用户界面。聪明的站内搜索引擎能给用户想要的结果,帮助你留住用户。
本书所讲的相关性是一门交叉学科,涵盖特征工程、机器学习、本体理论、用户测试、自然语言处理,还要与业务紧密结合。作者用一个在影片库中搜索想看的电影为例,系统展现了相关的技术和知识。
|
內容簡介: |
本书揭开了相关性搜索的神秘面纱,告诉大家如何将Elasticsearch 或Solr 这样的搜索引擎作为可编程的相关性框架,从而表达业务排名规则。从这本书中你可学会如何结合各种外部数据源、分类方法以及文本分析手段对相关性进行编程,以满足用户的个性化需求,将令人满意的搜索结果呈现给用户。此外,相关性搜索也需要一定的软性技能。本书还将告诉读者怎样与业务人员协作, 为业务找到正确的相关性需求,从而在搜索产品的整个研发生命周期内,实现相关性改进的良性循环。本书介绍了搜索引擎的基本原理,及相关性搜索的调试技术,用大量实例的方式详述了搜索引擎的诸多特性,以形成一整套针对相关性搜索的系统化方法,并倡导致力于提高搜索质量的企业文化。
|
關於作者: |
Doug Turnbull 在OpenSource Connections 上领导着一项搜索相关性的咨询业务,在那里他经常发表观点和更新博客。Doug 利用各种搜索和自然语言处理技术(NLP)为多个领域的客户构建语义丰富的相关性搜索体验。John Berryman 的第一份职业是航空工程师,但在航空领域工作了几年之后,他发现编写程序或解决数学难题才是他最喜欢的工作。最终,John 撇下了飞机和卫星,开始全职工作于软件开发、基础架构,以及搜索技术领域。目前,John 供职于Eventbrite,帮助利用Elasticsearch 构建事件活动的发现、搜索及推荐。
本书的三位译者的中英文水平都极高,且工作在系统管理的一线,具有丰富的理论知识和实践经验,相信会为读者带来一本质量上乘的图书。
|
目錄:
|
目录
第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 布尔搜索: ANDORNOT 34
2.4.2 基于 Lucene搜索的布尔查询(MUSTMUST_NOTSHOULD) ......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 用 TFIDF计算权重 ........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 搜索框中的
|
內容試閱:
|
译者序
与本书结缘还要追溯到一年前。当时正值团队启动新产品的研发,需要一款查询性能优良的 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通了那次意义重大的电话。就像是在
|
|