兴趣是第一源动力,很多职业最初的起源来自于个人对某一事物的好奇,由此产生了兴趣而一发不可收拾,产品经理也不例外。产品经理的从业者都知道,这个职业队伍从业者的经理很广泛,包容度很大,专业性也很难有统一的标准,不同项目,或同一项目不同阶段对产品经理的能力要求的侧重点也不一,很多同行应该在入行前都问过自己,如何知道自己是不是适合做产品经理呢?
在复盘我这6年的工作经验后,我得出的认知却也异乎寻常的朴素——兴趣是入行的最好老师。我所说的兴趣不仅仅是对产品经理是做什么的,怎么做有兴趣,更主要的是具体项目的兴趣,作为-1岁的产品经理,当时兴趣的焦点都关注在了科技界24小时的印钞机——搜索引擎;
搜索引擎
时至今日,细细回想其当时对搜索引擎的痴迷,内心深处还有难以言喻的共鸣,由于当时专业所限,对搜索引擎的接触虽然很多,但是究其原理,所知甚少,故因为好奇,所以想要了解;
1.1 搜索引擎的调研
犹记得那年,Alphabet还没成立,谷歌还没退出中国,日常接触的最多的搜索引擎还是——Google,国内百度的发展也在如火如荼的进行着,在我的家乡,多数人对于“百度一下,你就知道”也是耳熟能详;
那些年国内的谷歌是这样的:
那些年百度的首页也还没更新:
除了目前看来这两款主流的搜索引擎,当时这一领域可是热闹非凡,雄心勃勃的腾讯搜搜,搜狐的搜狗,雅虎搜索,声势浩大的微软必应,国外还有大量的同类产品,ASK JEEVES,Naver,新创搜索引擎——Duckduckgo等等,得益于盈利性极强的商业模式,加之庞大的用户增长红利,使得搜索引擎成为当之无愧的明星产品,尤其是受到新创引擎Duckduckgo的励志故事,并在深入了解google当年的车库发家史后,我也雄心勃勃的读起了PageRank,渴望破解搜索引擎背后产品的秘密,也打造一款广受喜爱的搜索引擎;
1.2 PageRank解密
如果读者了解过Google的车库创业史,应该了解PageRank对于Google的重要性,早期的google为什么使用体验好,给人以简单可依赖的感觉,不仅仅在于其早期没有广告的简洁界面,独自的快照系统、动态生成摘要信息,以及为实现高速检索而设置的分散系统(数千台规模的Linux集群)等等,最重要的优点就在于它检索的正确性,而PageRank就是这种正确性的保证,它可以自动判断网页重要性;
PageRank的核心思想有2点:
如果一个网页被很多其他网页链接到的话说明这个网页比较重要,也就是pagerank值会相对较高;
如果一个pagerank值很高的网页链接到一个其他的网页,那么被链接到的网页的pagerank值会相应地因此而提高;
下面这张图来自Wikipedia,比较形象地解释了核心思想,每个球代表一个网页,球的大小反应了网页的pagerank值的大小。指向网页B和网页E的链接很多,所以B和E的pagerank值较高,另外,虽然很少有网页指向C,但是最重要的网页B指向了C,所以C的pagerank值比E还要大。
PageRank有效地利用了 Web 所拥有的庞大链接构造的特性。 从网页A导向网页B的链接被看作是对页面A对页面B的支持投票,Google根据这个投票数来判断页面的重要性。可是 Google 不单单只看投票数(即链接数),对投票的页面也进行分析。「重要性」高的页面所投的票的评价会更高,因为接受这个投票页面会被理解为「重要的物品」。
根据这样的分析,得到了高评价的重要页面会被给予较高的 Page Rank(网页等级),在检索结果内的名次也会提高。PageRank 是 Google 中表示网页重要性的综合性指标,而且不会受到各种检索(引擎)的影响。倒不如说,PageRank 就是基于对"使用复杂的算法而得到的链接构造"的分析,从而得出的各网页本身的特性。当然,重要性高的页面如果和检索词句没有关联同样也没有任何意义。为此 Google 使用了精练后的文本匹配技术,使得能够检索出重要而且正确的页面。
简而言之,PageRank 是基于「从许多优质的网页链接过来的网页,必定还是优质网页」的回归关系,来判定所有网页的重要性。
对PageRank基本了解后,如何构建一套搜索引擎,当时笔者还是一脸茫然,后来又陆续了解了Luence、Nutch,才慢慢摸索了一些构建搜索引擎的基础,以及对搜索引擎产品背后的逻辑的直观认识,现在看来,当时的认知还真只是皮毛;
吴军《数学之美》里面提到搜索引擎分为三大块:下载,索引,搜索。
下载:
这部分是需要把你想要搜索的范围的原始数据。如果搜索的范畴是网页上的内容,那么它就是一个网络爬虫。我当时做的是一个校内网的搜索引擎,所以就写了一个爬虫从校园网主页开始下载,分析网页内的链接把符合要求的链接加入待下载队列,这样一直把所有校园网的网页全部都下载下来。
索引
搜索引擎之所以可以搜的那么快,都是索引的功劳。索引是一种专门针对搜索优化的结构,详情可以百度倒排索引 。
前面搜索下载的是网页全文,里面的html标签是不需要被搜索的,所以要把数据清洗一下,提取出其中的重要内容。文本内容的预处理还需要分词 、去除无意义的停用词等。分词是什么呢…你还是百度吧
建立索引有现成的库:LUCENE ,它自带有几个默认分词器,如果想要你的搜索引擎搜索的结果更好,你可以使用的中文分词器(这个当然也有现成的工具啦,ik分词,NLPIR这些都是现有的解决方案,效果也还不错)如果之前没有接触过它,那就需要学习一下。
索引建立好了,接下来就是搜索了。搜索是将根据查询词,搜索索引内匹配的内容,然后展示出来。符合查询词的结果多了的时候怎么办呢,这就涉及到排序的问题,这就有点复杂啦,这就涉及到很多排序算法比如tfidf之类的东西,不过这些lucene的api也帮你做了,它的内部有一个打分机制,将打分高放在搜索结果的前面。