发表于2024-12-25
关键字搜索框已经演变成查找数据和浏览大多数网站及应用的事实上的标准用户界面。“聪明”的站内搜索引擎能给用户想要的结果,帮助你留住用户。
本书所讲的“相关性”是一门交叉学科,涵盖特征工程、机器学习、本体理论、用户测试、自然语言处理,还要与业务紧密结合。作者用一个在影片库中搜索想看的电影为例,系统展现了相关的技术和知识。
《相关性搜索:利用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 电子书期待很久了,可以静静看看书
评分书很不错,京东送货真够快,必须给五星
评分还没开始看,应该不错
评分单位购书,多人选择的结果
评分舒适达 (sensodyne) 抗敏感 牙膏 120g×3(美白配方)+牙膏便携装×2
评分东西不错,送货很快,满意
评分书已到,还为查看。
评分期待很久了,可以静静看看书
评分帮公司同事买的,值得购买
相关性搜索:利用Solr与Elasticsearch创建智能应用 mobi epub pdf txt 电子书 格式下载 2024