转载

Q&A: 用Elasticsearch和Solr做相关性搜索

关键点

  • 判断在各个不同的搜索用例之间“相关性”到底意味着什么,这很重要。
  • 根据用户期望,建立一种改进和再评估的良性循环。
  • 关注对搜索的评估,而不是搜索的解决方案。
  • 设计的未来是信息检索。
  • 对Elasticsearch和Solr的改进使得发开推荐系统不再令人望而生畏。

在Doug Turnbull和John Berryman的新书“ Relevant Search ”中,他们用一种有趣而又方便的方式向大家展示了如何解决搜索引擎相关性的调优问题。

书中主要讲解了Elasticsearch和Solr,以及相关性工程师们该如何使用这些工具来构建合适的应用程序,以满足业务和客户的需求。在一个好的搜索引擎中,结果不只会根据事实的标准评级,也会根据与终端用户的相关性。判断成功还是失败都主要依靠提高评定的级别。而这本书的做法却有些不同:书的大部份章节都在讨论最好的方法,来超越这唯一的数字。

不幸的是,这个问题并没有唯一的正确答案。

通过一个全世界的《星际迷航》粉丝们都会喜欢的比较好的例子,这本书讲明了“判断用户到底想搜索什么”这件事有多困难。这本书并不是完全写给初学者的。有相关性经验的读者也可以从例子和理论中有所收获。

InfoQ采访了Turnbull,讨论了成为一个相关性工程师到底意味着什么。

InfoQ:请问对一个相关性工程师来说,非常典型的一天是怎样的?

Doug Turnbull:当我开始做一个相关性项目时,有很多事情都可能会占用我的时间。

首先,也是最重要的,我会试图分辨出在这个项目中“相关性”的确切含义是什么。每一个搜索的用例都是特别的。这个程序或者这个用例实现的重点,是不是用户每次都会非常细致地检查结果的呢?或者会不会这次搜索的目的只是为了取出一个值就可以了,那这样的话结果集中的第一个就应该是正确答案了?用户是不是这个领域的专家?他们愿不愿意使用复杂的搜索语法?或者他们也就是大众水平,想要的就是个象谷歌一样的东西?有时候这些就意味着对用户做深入分析。有多频繁用户会放弃搜索?他们得到了想要的结果吗?有时候需要与领域内的专家一起合作,来真正理解用户到底想要做什么。

第二,在我开始改进搜索时,我会需要确保我的改动的影响是可以被实时衡量的。这意味着把上一段话中收集到的信息转变成某些像 Quepid 一样的测试驱动的工作台。通过这样的工具,我就可以做出各种各样的解决方案,从简单的相关性调节,到高级NLP或机器学习,并且可以得到最直观的印象,它们对于我最重要的搜索到底有没有帮助。

第三,的确是有许多需要亲自动手的相关性工作的。这里并没有什么可以通吃的解决方案。有些问题只需要调节一下搜索引擎的查询方式就可以解决。还有的问题要做的解决方案就复杂得多。也许需要理解演讲的部分内容这很重要?或者可能你正在Twitter上进行搜索,而那些标签需要你有针对性地进行个性化处理?可能会有神奇的答案来解决问题……但也可能没有。

第四,除了对搜索结果进行严格的排序来帮助用户找到他们想找的东西之外,还有一些与用户经验有关的问题。有个人们常犯的比较大的错误就是过于关注真实相关性(但那只是对搜索结果的排序而已),却忽略了感知相关性。我提到感知相关性是指帮助用户理解为什么一个结果是相关的。这包括要保证你的内容里有描述性的标题,而且你也在上下文中突出了相匹配的关键词。其它的像分类、自动补齐和拼写检查等功能也可以帮助用户用他们自己的方法找出他们需要的东西,而并不需要100%完全匹配的真实相关性。

最后,这一点可能会让大家惊奇,就是要保证变更可以尽快发布。相关性的改动能不能以增量方式尽快发布出去?你的部署方式满足这样的条件吗?这些是运维要考虑的问题,但这也和相关性有非常大的关系。你需要尽快把你修改的东西发布出去,然后再重新评估你所做的改动是不是有积极的影响。

InfoQ:随着时间积累,一个相关性工程师的工作内容会发生怎样的变化?有没有可能会“定下来,然后忘掉它”?

Turbull:在有些情况下你的确可以“定下来,然后忘掉它”。比如说,你对威廉·莎士比亚的文集已经找到了非常好的搜索方法,那么,只要这些文集的内容不再改变,你的查询方式也就不需要改变了。

更重要的是,对威廉·莎士比亚的文集进行大量的搜索工作的商业动机也并不会非常多。

更典型的情况是,从用户的期望到你的程序设计,所有的东西都会变。孩子们可能用一种新的方言来进行搜索。在你的线上商店里,可能会有许多不同的产品,而旧的产品已经下架不再出售。

我们希望能够形成一种持续改进和对用户期望进行相关性重新评估的 良性循环 。这样才是更典型的例子:你不断地根据搜索的结果进行调整。

更重要的是,你会想要进行增量的和快速的调整,而不是慢吞吞的全面改动。将改动一小批一小批地发布出去,然后重新评估你的分析结果。如果改动没有达到预期效果,那就放手回滚。换句话说,我们更喜欢“敏捷”的方式,而不是一种一揽子式的相关性策略。你要知道,如果你基于去年夏天的数据和用户信息做了相关性调整,然后在今年冬天才发布,那这样的改动事实上已经没有意义了。

InfoQ:请问有哪些特别常见的错误?

Turnbull:对我来说,最大的错误在于只关注解决方案,而不关注对搜索的评估。

在我的工作中,相关性最困难的部分在于评估搜索是不是相关的。这要回答类似下面的问题:这些结果是正确的吗?用户对这些结果满意吗?这些结果是不是用户希望能从这样的搜索程序中得到的?是在这样的上下文中吗?我们的改动是不是取得了进步?

相关性工程师事实上并没有足够的能力知道搜索结果到底是不是相关的。相反,他们需要与非技术同事和领域专家一起,对用户数据进行分析并且评估搜索的正确性。这个事实上非常困难,即使是最好的分析方法,如果给它错误的上下文,它也可能会被误导。有时候程序非常专业化,分析学完全帮不上忙。

不幸的是,有些公司直接采用了“银弹”解决方案,或者某些令人兴奋的新技术,而没有给予评估足够的重要性。他们没有把时间花在进行评估上。比如,有种名为word2vec的现在很流行的技术,可以对你的搜索文档进行某种类型的搜索。Word2vec是一种理解单词背后的语义关系的机器学习算法。理解单词“prince”和“king”是紧密相关的,或者“Anakin

Skywalker”和“Darth Vader”是 同一个人 。对我们技术工程师来说,一想到“哦,如果我搜索Darth

Vader,结果就会出来Anakin

Skywalker”,这似乎是件很酷的事。但事实上有可能这恰好是这次搜索想要得到的答案,也有可能这完全与搜索的目标不相关。

那些非常重视搜索效果的公司是绝不可能把搜索评估这项工作外包出去的。在这本书中,我们也写到了 测试驱动相关性 等方法来解释分析方法和技术,可以用这些来帮助解决这些问题。当你非常习惯于衡量相关性时,你就可以开始使用一些高级技术了,比如学习分级。

InfoQ:让通才去解决搜索这个问题是不是太困难了?

Turnbull:另一种考虑这个问题的方法是网页设计的演进。在最初的网页开发领域,没有几个人是被称为“网页设计师”的。比如在2000年时,我是一个通才的程序员,我可以通过在表格中排列好img标签来做出一个不错的HTML页面。但我却没有停下来,想想该去招一个设计师。为什么呢?那时候还是网页时代的早期,网页交互是很新的内容。慢慢地,用户的品味提高了,对于网站的交互式体验有了更高的要求。所以现在任何想通了的网站都尽量地加大了对设计的投入,和对“通才编程”的投入一样多。

我也是用相似的思路去考虑搜索的。谷歌已经让我们对好的搜索体验有了很高的期望。尽管这样,仍然有许多领域或专业应用方面是大有可为的。搜索医疗文章来帮助医生诊断病人,这事看起来和搜索你的电子商务库来成达一笔好交易没什么不同。这个与研究十九世纪早期的新闻完全不同。有些小功能看起来是相同的:自动补齐、搜索栏、高亮的搜索结果,等等。但在搜索栏中敲下每个按键之后背后的动作就变得完全不同。对搜索结果进行排序的方法也变得完全不同。现在已经出现了一种新型的“设计师”,专门做搜索背后的相关性和交互式会话的内容。

这就是对这座冰山的提示。现在许多短期流行的机器学习内容都是用来解决信息检索问题的:有些会针对单个用户返回根据个性化的相关性排过序的结果。许多初创公司都通过非常智能的搜索方法来驱动对话机器人。越来越多的 推荐系统 都是用Elasticsearch构建的了。

这就是将来的交互模式。设计的未来就是信息检索。Solr和Elasticsearch结合他们的可扩展的工具集,可以领导下一代的设计和交互。

InfoQ:现在Elasticsearch和Solr看起来已经有了非常丰富的功能集。接下来还会有什么?随着时间的过去这些技术会发生怎样的改变?

Turnbull:Elasticsearch和Solr都可以作为 构建推荐系统 的简易框架,都取得了不错的进步。我觉得这让许多中型公司开发推荐功能的门槛大大降低。同样的,Elasticsearch和Solr也让开发搜索功能变得更简单,我觉得就是从已有的货架上挑出一个开源工具来,用它就可以基于相关性进行结果排序,这意味着不必再了解复杂而昂贵的机器学习解决方案了。比如我的合作者,John Berryman,他实际上就是做这个的:他 用Elasticsearch为Eventbrite公司构建了一套推荐系统 。但还有许多可以用得上的东西,其中就包括了Trey Granger的关于Solr和Elastic的 图产品 的 知识图谱 。

InfoQ:除了读这本书,还有哪些资源是那些刚入门的相关工程师们可以参考的?

Turnbull:好的,首先,有问题可以尽管 联系我 。我是一名咨询师,我也非常喜欢跟别人讲东西,所以我很喜欢别人来找我。另外要特别强调的是,如果你的公司里有人员配置的问题,我是可以免费提供一小时的 知识分享 的,或者说午餐时间学习安排。

就不错的搜索博客来说,我在我们 公司的博客 上写过不少东西。Sujit Pal也在他的博客上写过 非常多 的东西,你也可以从中学到很多。我们也考虑到我的合作者并且会让他也 多写 一些,因为在我们合作的过程中,他为我们的博客 贡献了非常多的内容 。

对于相关性和信息检索的图书,你肯定会想读读“ Introduction to Information Retrieval ”。“ Taming Text ”也是一本很不错的书,它把搜索和自然语言处理联系在了一起。我也还有一本关于相关性搜索的 书 ,讲的是实现相关性的业务级流程。

对于搜索引擎相关的图书,我推荐我的同事们写的“ Apache Solr Enterprise Search Server ”,“ Solr in Action ”和“ Elasticsearch in Action ”。

关于书作者

Doug Turnbull 是 OpenSource Connections 公司的一名Elasticsearch咨询师,也是“ Relevant Search ”的作者。Doug可以帮助客户开发更聪明、更符合上下文以及更个性化的搜索程序。Doug非常喜欢构建那些有助于搜索相关性的工具,包括 Quepid 、 Splainer 和 Elyzer 等。

Q&A: 用Elasticsearch和Solr做相关性搜索 John Berryman 刚开始工作时是一名航天工程师,但很快就发现他真正的兴趣在于软件和数学的交集。John很快就换到了技术咨询行业,主要是全文检索方面。在这方面的主要工作包括为美国专利和商标局搭建了一套专利检查搜索系统、在国际上进行关于搜索技术和相关应用的演讲、以及将语义搜索和推荐整合到Solr搜索引擎中等。

阅读英文原文: Q&A: Relevant Search with Elasticsearch and Solr

原文  http://www.infoq.com/cn/articles/relevant-search-book-q-a
正文到此结束
Loading...