谷歌以及其他顶级的搜索引擎现在已经把用户培养成为这样一种群体,他们期望搜索应用几乎能读懂自己内心的想法。本书所讨论的,就是我们如何更加积极地朝着理解用户意图的方向去努力。
如何解决搜索相关性、推荐和个性化方面的一些世界级难题。
通常衡量一个项目成功与否的简单指标:系统运行更快了吗?应用开发完成了吗?
但是,搜索相关性并不遵循这些规则,。而且从谷歌时代成长起来的用户是不会容忍“还算凑合”这样的搜索的。他们想要的是“绝顶聪明”的搜索。他们希望搜索能够优先考虑其所关心的条件标准,而不是像搜索引擎通常那样,盲目地去猜测相关性。
TMDB数据集http://themoviedb.org
我们将学习如何根据搜索条件,而不是对搜索引擎的神秘猜测,来严格控制对搜索结果的排名。
代码https://github.com/o19s/relevant-search-book
一、搜索的相关性问题
所谓相关性,就是根据内容对用户及业务需求的满足程度,对搜索内容进行排名的一门学问。
搜索的相关性问题如此之难,某种程度上是由于我们对搜索行为的轻视。
Google认识到Web的相关性依靠信任,而不是只依靠文本(恶意网页会从通过文本被搜索)。给用户提供的帮助,需要过滤掉网络上那些不可靠的“害群之马”。所以Google开发出了他的PageRank算法,以此来衡量内容的可信度。PageRank通过统计指向某站点的Web链接数来计算可信度。利用PageRank,Google不仅为用户返回了与搜索相匹配的内容,而且这些内容还是被网络上其他地方认为是可靠和可信的。返回可信内容这一重要技术直到今天还在使用,因为Google一直在和恶意网站玩猫捉老鼠的游戏,而那些恶意网站也一直在试图打破游戏规则。
在信息检索中,相关性被定义为一种返回搜索结果的实践,它能最大限度地满足用户的信息需求。
为了找到更好的文本搜索方法,信息检索的研究人员借助一组用于测试的文档对不同方法进行打分。
例子:Google为网站找到PageRank这一特征(步骤1).这一特征伴随着每个网页被“编进”了Google的搜索引擎里(实现了步骤2).当你发起一次搜索,Google会根据你在这次搜索中所考虑的相关性对各种因素进行度量(步骤3)。例如Google会直接对PageRank作为一种可信度的排名信号。其他信号可能还包括:搜索的字符串在页面标题或正文里出现的频率,以及基于用户偏好的个性化因素。Google将所有这些信号都放入一个更大的排名计算程序中,对搜索结果进行排序,以期让用户找到满意的结果(步骤4)。
特征影响决策。搜索相关性的研发工作很大程度上就是在做特征选取。机器学习也许能找出一些可识别的特征来。
根据颜色、尺码等信号进行排序
本书用ElasticSearch作为范本,Solr也适用。