﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-inwind-文章分类-搜索引擎</title><link>http://www.cppblog.com/inwind/category/528.html</link><description /><language>zh-cn</language><lastBuildDate>Sun, 25 May 2008 09:31:35 GMT</lastBuildDate><pubDate>Sun, 25 May 2008 09:31:35 GMT</pubDate><ttl>60</ttl><item><title>Google 招聘的21道题目</title><link>http://www.cppblog.com/inwind/articles/1597.html</link><dc:creator>inwind</dc:creator><author>inwind</author><pubDate>Wed, 07 Dec 2005 05:41:00 GMT</pubDate><guid>http://www.cppblog.com/inwind/articles/1597.html</guid><wfw:comment>http://www.cppblog.com/inwind/comments/1597.html</wfw:comment><comments>http://www.cppblog.com/inwind/articles/1597.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/inwind/comments/commentRss/1597.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/inwind/services/trackbacks/1597.html</trackback:ping><description><![CDATA[<P>还没看，什么时候看了，再写下答案吧</P><A id=more></A>
<P>1. Solve this cryptic equation, realizing of <BR>course that values for M and E could be <BR>interchanged. No leading zeros are allowed. <BR><BR>WWWDOT - GOOGLE = DOTCOM <BR><BR>2. Write a haiku describing possible methods <BR>for predicting search traffic seasonality. <BR><BR>3. <BR>1 <BR>1 1 <BR>2 1 <BR>1 2 1 1 <BR>1 1 1 2 2 1 <BR><BR>What is the next line? <BR><BR>4. You are in a maze of twisty little passages, <BR>all alike. There is a dusty laptop here with a <BR>weak wireless connection. There are dull, <BR>lifeless gnomes strolling about. What dost <BR>thou do? <BR><BR>A) Wander aimlessly, bumping into <BR>obstacles until you are eaten by a grue. <BR>until you are eaten by a grue. <BR>B) Use the laptop as a digging device to <BR>tunnel to the next level. <BR>C) Play MPoRPG until the battery dies <BR>along with your hopes. <BR>D) Use the computer to map the nodes <BR>of the maze and discover an exit path. <BR>E) Email your resume to Google, tell the <BR>lead gnome you quit and find yourself <BR>in whole different world. <BR><BR><BR>5. What's broken with Unix? <BR>How would you fix it? <BR><BR>6. On your first day at Google, you discover <BR>that your cubicle mate wrote the textbook <BR>you used as a primary resource in your first <BR>year of graduate school. Do you: <BR><BR>A) Fawn obsequiously and ask if you <BR>can have an autograph. <BR>B) Sit perfectly still and use only soft <BR>keystrokes to avoid disturbing her <BR>concentration. <BR>C) Leave her daily offerings of granola <BR>and English toffee from the food bins. <BR><BR>D) Quote your favorite formula from the <BR>textbook and explain how it's now <BR>your mantra. <BR>E) Show her how example 17b could <BR>have been solved with 34 fewer lines <BR>of code. <BR>7. Which of the following expresses Google□ <BR>over-arching philosophy? <BR><BR>A) "I'm feeling lucky" <BR>B) "Don't be evil" <BR>C) "Oh, I already fixed that" <BR>D) "You should never be more than <BR>50 feet from food" <BR>E) All of the above <BR><BR>8. How many different ways can you color an <BR>icosahedron with one of three colors on <BR>each face? <BR><BR>What colors would you choose? <BR><BR>9. This space left intentionally blank. Please fill it <BR>with something that improves upon emptiness. <BR><BR>10.On an infinite, two-dimensional, rectangular <BR>lattice of 1-ohm resistors, what is the <BR>resistance between two nodes that are a <BR>knight's move away? <BR><BR>11.It's 2 PM on a sunny Sunday afternoon in the <BR>Bay Area. You're minutes from the Pacific <BR>Ocean, redwood forest hiking trails and world <BR>class cultural attractions. What do you do? <BR><BR>12.In your opinion, what is the most beautiful <BR>math equation ever derived? <BR><BR>13. Which of the following is NOT an actual <BR>interest group formed by Google employees? <BR><BR>A. Women's basketball <BR>B. Buffy fans <BR>C. Cricketeers <BR>D. Nobel winners <BR>E. Wine club <BR><BR>14.What will be the next great improvement in <BR>search technology? <BR><BR>15.What is the optimal size of a project team, <BR>above which additional members do not <BR>contribute productivity equivalent to the <BR>percentage increase in the staff size? <BR>A) 1 <BR>B) 3 <BR>C) 5 <BR>D) 11 <BR>E) 24 <BR><BR>16.Given a triangle ABC, how would you use only <BR>a compass and straight edge to find a point P <BR>such that triangles ABP, ACP and BCP have <BR>equal perimeters? (Assume that ABC is <BR>constructed so that a solution does exist.) <BR><BR>17.Consider a function which, for a given whole <BR>number n, returns the number of ones required <BR>when writing out all numbers between 0 and n. <BR>For example, f(13)=6. Notice that f(1)=1. What <BR>is the next largest n such that f(n)=n? <BR><BR>18.What's the coolest hack you've ever written? <BR><BR>19.'Tis known in refined company, that choosing <BR>K things out of N can be done in ways as <BR>many as choosing N minus K from N: I pick K, <BR>you the remaining. <BR><BR>Find though a cooler bijection, where you show <BR>a knack uncanny, of making your choices contain <BR>all K of mine. Oh, for pedantry: let K be no more <BR>than half N. <BR><BR>20.What number comes next in the sequence: <BR>10, 9, 60, 90, 70, 66,? <BR><BR>A)96 <BR>B) 1000000000000000000000000000000000 <BR>0000000000000000000000000000000000 <BR>000000000000000000000000000000000 <BR>C) Either of the above <BR>D) None of the above <BR><BR>21.In 29 words or fewer, describe what you <BR>would strive to accomplish if you worked <BR>at Google Labs. </P><img src ="http://www.cppblog.com/inwind/aggbug/1597.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/inwind/" target="_blank">inwind</a> 2005-12-07 13:41 <a href="http://www.cppblog.com/inwind/articles/1597.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Larbin 一种高效的搜索引擎爬虫工具</title><link>http://www.cppblog.com/inwind/articles/1596.html</link><dc:creator>inwind</dc:creator><author>inwind</author><pubDate>Wed, 07 Dec 2005 05:38:00 GMT</pubDate><guid>http://www.cppblog.com/inwind/articles/1596.html</guid><wfw:comment>http://www.cppblog.com/inwind/comments/1596.html</wfw:comment><comments>http://www.cppblog.com/inwind/articles/1596.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/inwind/comments/commentRss/1596.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/inwind/services/trackbacks/1596.html</trackback:ping><description><![CDATA[<P><A href="http://larbin.sourceforge.net/index-eng.html">http://larbin.sourceforge.net/index-eng.html</A><BR>这是larbin的主页，感情又是sourceforge上的开源项目啊。<BR>开源就是好，前辈们的代码，经验，可以为后来者铺平道路，同时，开源又是练手的最佳途径。这一段时间太忙了，等空下来，也要去看看sourceforg上面有没有合适的项目，参加参加<BR><BR>１］larbin的简介<BR>larbin是一种开源的网络爬虫/网络蜘蛛，由法国的年轻人 <A href="http://para.inria.fr/~ailleret">Sébastien Ailleret</A>独立开发。larbin目的是能够跟踪页面的url进行扩展的抓取，最后为搜索引擎提供广泛的数据来源。</P>
<P>Larbin只是一个爬虫，也就是说larbin只抓取网页，至于如何parse的事情则由用户自己完成。另外，如何存储到数据库以及建立索引的事情 larbin也不提供。</P>
<P>latbin最初的设计也是依据设计简单但是高度可配置性的原则，因此我们可以看到，一个简单的larbin的爬虫可以每天获取５００万的网页，实在是非常高效。</P>
<P>2] Larbin的性能特征<BR>高效是我对 larbin 的评价。<BR>今年四月份的时候我对larbin的性能做过一个测试，luliang.dhs.org是我自己常用的服务器，CPU 为1G，内存512，其它的性能一般，因为是三年前购置的。</P>
<P>我将我自己的网页 <A href="http://blog.wespoke.com/">六翼</A>作为入口，运行larbin进行５层内的url的抓取。</P>
<P>当时纪录的一些数据：<BR>Internet IO: 500-700k/per second （我想大约我的网络下载的瓶颈了吧）<BR>CPU top: 5%-15% <BR>disk consume: 1M/s ，基本上一个小时爬 3个G 的网页。差不多20万的页面<BR>url 解析: 200万－300万每小时</P>
<P>3] larbin 的作用<BR>很多人初见 larbin 不知道从哪里下手，那么我来简单介绍一下 larbin 的功能和实际应用。<BR>1. larbin 获取单个、确定网站的所有联结，甚至可以镜像一个网站。<BR>1. larbin 获取单个、确定网站的所有联结，甚至可以镜像一个网站。<BR>2. larbin建立 url 列表群，例如针对所有的网页进行 url retrive后，进行xml的联结的获取。或者是 mp3 。<BR>3. larbin 定制后可以作为搜索引擎的信息的来源（例如可以将抓取下来的网页每2000一组存放在一系列的目录结构里面）。</P>
<P>总归，larbin应当是一个被广大搜索引擎爱好者应当引起注意的一个产品，虽然其功能逐渐被 Nutch 所接受和替代，但是其在爬虫上的优美设计的确值得称道。 </P>
<P><A id=more></A><SPAN class=posted>Posted at December 24, 2004 02:35 AM by <A href="mailto:sixwings@googlegroups.com">Liang</A> at <A href="http://www.wespoke.com/archives/000879.html">02</A></SPAN></P><img src ="http://www.cppblog.com/inwind/aggbug/1596.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/inwind/" target="_blank">inwind</a> 2005-12-07 13:38 <a href="http://www.cppblog.com/inwind/articles/1596.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>羊群效应：搜索引擎暗规则之四 (zz)</title><link>http://www.cppblog.com/inwind/articles/1595.html</link><dc:creator>inwind</dc:creator><author>inwind</author><pubDate>Wed, 07 Dec 2005 05:22:00 GMT</pubDate><guid>http://www.cppblog.com/inwind/articles/1595.html</guid><wfw:comment>http://www.cppblog.com/inwind/comments/1595.html</wfw:comment><comments>http://www.cppblog.com/inwind/articles/1595.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/inwind/comments/commentRss/1595.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/inwind/services/trackbacks/1595.html</trackback:ping><description><![CDATA[<P>“羊群效应”是指管理学上一些企业的市场行为的一种常见现象。例如一个羊群（集体）是一个很散乱的组织，平时大家在一起盲目地左冲右撞。如果一头羊发现了一片肥沃的绿草地，并在那里吃到了新鲜的青草，后来的羊群就会一哄而上，争抢那里的青草，全然不顾旁边虎视眈眈的狼，或者看不到其它还有更好的青草。 </P>
<P>羊群效应的出现一般在一个竞争非常激烈的行业上，而且这个行业上有一个领先者（领头羊）占据了主要的注意力，那么整个羊群就会不断摹仿这个领头羊的一举一动，领头羊到哪里去吃草，其它的羊也去哪里淘金。</P>
<P>搜索引擎这个市场上的竞争加剧的情况下，搜索引擎的巨头之间对对手之间的动作非常的注意，一旦一个搜索引擎出现某一个新的功能，或者进入一个新的领域，众多的搜索引擎都会去尝试这个新的“水草地”是否真的肥美，是否真得有利可图。</P>
<P>在搜索引擎行业上，2002年以来Google确立了领头羊的位置，因此这只羊的一举一动都成了大家摹仿的标本：</P>
<P>1] <BR>2003 Google 收购 blogger.com ，进入blog市场<BR>MSN 2004 年底发布 MSN Space 进入blog市场<BR>Yahoo 2005 发布 Yahoo 360</P>
<P>2] <BR>Google 收购 Picasa<BR>Yahoo 收购 flickr</P>
<P>3]<BR>Yahoo 拥有 Map <BR>Google 发布 Map 服务</P>
<P>4]<BR>几乎同时 Yahoo 推出 video search<BR>Google 也立刻发布了video search</P>
<P>5]<BR>2004 Google desksearch<BR>2004 Msn Desksearch<BR>2005 Baidu desksearch<BR>2005 Yahoo Desksearch</P>
<P>6]<BR>Gmail 提供 1 G 的空间<BR>Yahoo 扩容<BR>Msn 扩容至250M</P>
<P>7]<BR>google 的 adwords 赚了钱<BR>现在已经成为一种标准的模式</P>
<P>这样的例子举不胜据，还有例如API的公开等，那么羊群效应到底是好还是坏呢？</P>
<P>正：羊群效应是一种减少研发和市场调研的一种策略，现在被广泛的应用在各个行业上，也叫做“Copy Strategy(复制原则)”。当一个公司通过调研和开发而投放市场的产品，会被对手轻易的复制而免去前期的研发成本，是加剧竞争的一个来源之一。</P>
<P>反：羊群效应更多带来的是盲目上马的项目和没有经过充分的市场调研而导致的模糊的前景，甚至会分散一个公司的精力。正所谓，没有免费的午餐，把握好羊群效应带来的利弊才能做成正确的决策，选择肥沃的草地。</P>
<P>让我们随着羊群效应来预测一下未来几个“必然”的事件吧：</P>
<P>1] Google 会进入个人门户(Personal Portal)<BR>这个是跟随 Msn Space 和 Yahoo 360 后对blogger和现有的多种服务例如Picasa，gmail等整合在一起，加强这方面的竞争。</P>
<P>2] Msn 会将 Desksearch 集成在新的OS里。(现有的Windows的search不是基于搜索引擎技术的Desksearch)</P>
<P>3] Baidu 和 MSN 都会推出类似 Google Adsense 网页相关广告的业务。</P>
<P>4] Msn 和 Yahoo 会提供 音频和视频blog。</P>
<P>相信还会有很多的事情会发生，羊群效应，正是在培养这样一个趋同，却又激烈竞争的群体。</P><img src ="http://www.cppblog.com/inwind/aggbug/1595.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/inwind/" target="_blank">inwind</a> 2005-12-07 13:22 <a href="http://www.cppblog.com/inwind/articles/1595.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>破窗理论：搜索引擎暗规则之三 (zz)</title><link>http://www.cppblog.com/inwind/articles/1594.html</link><dc:creator>inwind</dc:creator><author>inwind</author><pubDate>Wed, 07 Dec 2005 05:21:00 GMT</pubDate><guid>http://www.cppblog.com/inwind/articles/1594.html</guid><wfw:comment>http://www.cppblog.com/inwind/comments/1594.html</wfw:comment><comments>http://www.cppblog.com/inwind/articles/1594.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/inwind/comments/commentRss/1594.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/inwind/services/trackbacks/1594.html</trackback:ping><description><![CDATA[<P>首先解释一下什么是破窗理论：</P>
<P>"破窗理论"体现的是细节对人的暗示效果，以及细节对整体影响的扩展性</P>
<P>　　美国心理学家詹巴斗曾经做过一个"偷车实验 "，将两辆一模一样的轿车分别放在一个环境很好的中产阶级社区和环境比较脏乱的贫民区，结果发现贫民区的车很快被偷走了，而另一辆几天后仍然完好无损；如果将中产阶级社区的那辆车的天窗玻璃打破，几个小时后，那辆车也被偷了。</P>
<P>　　后来，在此实验基础上，美国政治学家威尔逊和犯罪学家凯林提出了有名的"破窗理论"：如果有人打坏了一栋建筑上的一块玻璃，又没有及时修好，别人就可能受到某些暗示性的纵容，去打碎更多的玻璃。</P>
<P>对于搜索引擎来说，前面chedong的例子已经非常明显，随着更多的人认识到搜索引擎可以获取更多的利益，不法之徒当然回去尝试采用各种作弊手段进行扰乱正常的拍名和搜索结果，如果搜索引擎不即时制止， 这种情况就会泛滥，最好到严重的要影响到用户使用的地步的时候再来处理也就要麻烦的多和面临更多的作弊者。<BR>看这个搜索结果<A href="http://www.google.com/search?lr=&amp;ie=UTF-8&amp;oe=UTF-8&amp;q=%E5%A4%A9%E4%B8%8B%E6%97%A0%E8%B4%BC%E5%85%8D%E8%B4%B9%E7%94%B5%E5%BD%B1%E4%B8%8B%E8%BD%BD"><FONT color=#6f75ab>Google 里搜索 天下无贼免费电影下载</FONT></A>，你完全可以想像这样的结果是对Spam的一种变相的鼓励。</P>
<P>破窗理论的推论就是注重细节，防微杜渐。一旦有第一个spam出现，即时的制止，那么后面的spam也许就不会那么轻易的去搜索引擎上尝试，因为毕竟敢于做第一（第一个打破窗户）的人还是少数。</P>
<P>看看Baidu和Yahoo，在破窗上封堵的就比google快一些，因此基本上现在能够看到的spam基本上都来自google的结果。</P>
<P>google adsense呢？我以前曾经写过几篇关于<A href="http://www.wespoke.com/archives/000841.html"><FONT color=#6f75ab>fraud click(点击欺骗)</FONT></A>的文章，fraud click的破窗随着google去年把修斯顿的一家公司推上了法庭而弥补好了。可是另外一种更严峻的破窗又出现了，直接危机到google adsense的存亡：广告内容作弊。</P>
<P>我看到几乎一半的中国的小网站刊登google adsense的时候都在作弊，这种利用iframe 的嵌套的作弊，然后调用另外的一段js代码从而刊登出与原文完全不相关的广告，例如房屋贷款，信用卡申请等价格较高的adsense，从我第一次注意到大约在2个月前到现在已经泛滥成灾。</P>
<P>破窗，一个小的缺口，几滴渗漏的河水，也许会冲垮一个帝国。</P><img src ="http://www.cppblog.com/inwind/aggbug/1594.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/inwind/" target="_blank">inwind</a> 2005-12-07 13:21 <a href="http://www.cppblog.com/inwind/articles/1594.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>20 80 法则：搜索引擎暗规则之二(zz)</title><link>http://www.cppblog.com/inwind/articles/1593.html</link><dc:creator>inwind</dc:creator><author>inwind</author><pubDate>Wed, 07 Dec 2005 05:20:00 GMT</pubDate><guid>http://www.cppblog.com/inwind/articles/1593.html</guid><wfw:comment>http://www.cppblog.com/inwind/comments/1593.html</wfw:comment><comments>http://www.cppblog.com/inwind/articles/1593.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/inwind/comments/commentRss/1593.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/inwind/services/trackbacks/1593.html</trackback:ping><description><![CDATA[<P>20/80法则也叫二八定律，即巴莱多定律。巴莱多定律是19世纪末20世纪初意大利经济学家巴莱多发明的。他认为，在任何一组东西中，最重要的只占其中一小部分，约20%，其余80%尽管是多数，却是次要的，因此又称二八定律。</P>
<P>在搜索引擎的设计上，可以说大多数的搜索引擎在搜索结果上第一页有80%的结果是相同的，不同的只有20%。可是正是这20% make different.</P>
<P>这20%的差别也是不同搜索引擎之间的差距，能够完善这20%将对一个搜索引擎来说是至关重要的。</P>
<P>在另外一方面，对于一个搜索引擎的完善，例如你可以花20%的努力做到80%的效果，而要想提高剩下的20%的效果也许要耗费80%的精力。</P>
<P>一个简单的例子，一个搜索引擎现在还比较初级，也许分词和搜索相关的准确率在80％左右，想要进一步提高，也许要调整40，50个参数，调整很多方面的因子，考虑很多的算法，花了极大的精力后发现只提高了一点，再调整，如此三番，也许很久一段时间后发现有90％了，这个10％就是大的突破，但是要花去的努力要比从0％到80％大的多的多。</P>
<P>搜索引擎各项参数的差距也许只有几个百分点，可是这几个百分点就是真正的差别，就真得创造了胜者和失败者。</P>
<P>从搜索的方面看，20 80 法则有另外的意义，80%的搜索集中在20%的少量关键词上，也就是说有20%的搜索词汇占了80％的总体搜索流量。搜索的词频可以通过搜索引擎的每天的统计得到，在某一些特殊的情况，这些分布可以用来对搜索引擎进行非常好的矫正工作。</P><img src ="http://www.cppblog.com/inwind/aggbug/1593.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/inwind/" target="_blank">inwind</a> 2005-12-07 13:20 <a href="http://www.cppblog.com/inwind/articles/1593.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>马太效应：搜索引擎暗规则之一(zz)</title><link>http://www.cppblog.com/inwind/articles/1592.html</link><dc:creator>inwind</dc:creator><author>inwind</author><pubDate>Wed, 07 Dec 2005 05:19:00 GMT</pubDate><guid>http://www.cppblog.com/inwind/articles/1592.html</guid><wfw:comment>http://www.cppblog.com/inwind/comments/1592.html</wfw:comment><comments>http://www.cppblog.com/inwind/articles/1592.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/inwind/comments/commentRss/1592.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/inwind/services/trackbacks/1592.html</trackback:ping><description><![CDATA[<P>搜索引擎暗规则序</P>
<P>中国人有句古话叫做：“学以至用”。若干年我一直对这句话封为神灵，因为只用致用才能看到学的效果，了解到学的不足，享受到学的快乐。</P>
<P>搜索引擎在过去两年的发展并没有大突破，但是却逐步走向成熟，走向商业。正是这两年的时间，部分的业余时间都用来做一些开发和研究，当我逐渐了解的更多的时候，也是我结束单枪披马的时候。未来的兴趣也许会转向分类技术，因此希望能够用这个系列为这段成长岁月化上句号。</P>
<P>所谓暗规则，其实就是一些生活中非常显然的规则，只不过在搜索引擎这个领域表现的不是那么的突出，之所以不够突出，原因最主要的是因为搜索引擎还在发展，市场还在进一步加剧竞争，这些暗规则或多或少已经在反映在现在的搜索引擎上了。相信有一天，这些规则会被看到的更清晰，更深入。</P>
<P><BR>搜索引擎暗规则之一</P>
<P>《新约•马太福音》中有这样一个故事，一个国王远行前，交给三个仆人每人一锭银子，吩咐他们："你们去做生意，等我回来时，再来见我。"国王回来时，第一个仆人说："主人，你交给我们的一锭银子，我已赚了10锭。"于是国王奖励他10座城邑。第二个仆人报告说："主人，你给我的一锭银子，我已赚了5锭。 "于是国王例奖励了他5座城邑。第三个仆人报告说："主人，你给我的一锭银子，我一直包在手巾里存着，我怕丢失，一直没有拿出来。"于是国王命令将第三个仆人的一锭银子也赏给第一个仆人，并且说："凡是少的，就连他所有的也要夺过来。凡是多的，还要给他，叫他多多益善。"</P>
<P>这就是马太效应。</P>
<P>简单的说，就是让富有者更加富有，让贫穷者更加贫穷。</P>
<P>对于搜索引擎来说，马太效应是一条暗规则。10年的发展期过后，google,yahoo等已经成为市场的绝对主流，利润的分享趋向与这些超大型的搜索引擎，而不是中小型的搜索引擎。</P>
<P>例如，你可以制作一个搜索引擎，流量是google的1/1000(这个数目并不大，每天的独立IP是大约6万，PageView是30万，大约和3,4个 booso.com 的规模大不了多少。)，但是你拿到的回报和这个搜索引擎的价值绝对没有google的1/1000(这个大约是6000万美金，或者5亿人民币)。</P>
<P>马太效应还能反应在市场倾向于分化，倾向于使得市场的份额集中在一两个巨头的身上。因为市场对领头羊的投入会拿到比例更高的回报，因此广告／合作等的机会也会遵从马太效应，成为领头羊的东风。</P>
<P>马太效应还表现在当搜索引擎成为领头羊的时候，能够聚合更多的资金人力扩展这个优势，例如启动一系列的其它的业务Mp3,Pic search,Vedio等，巩固和扩大优势。</P>
<P>那么对于中小型的搜索引擎而言，价值在哪里呢？<BR><BR>市场是残酷的，可以预言现在大多数的中小型搜索引擎从经济的角度讲都要灭亡，能够保留下来的一定不会是单纯的搜索引擎，也许是被某一个网站收购成为其附加值，也许转向做企业内部搜索等现在市场还没有显著分化的领域。</P><img src ="http://www.cppblog.com/inwind/aggbug/1592.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/inwind/" target="_blank">inwind</a> 2005-12-07 13:19 <a href="http://www.cppblog.com/inwind/articles/1592.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Google的启示</title><link>http://www.cppblog.com/inwind/articles/1591.html</link><dc:creator>inwind</dc:creator><author>inwind</author><pubDate>Wed, 07 Dec 2005 05:16:00 GMT</pubDate><guid>http://www.cppblog.com/inwind/articles/1591.html</guid><wfw:comment>http://www.cppblog.com/inwind/comments/1591.html</wfw:comment><comments>http://www.cppblog.com/inwind/articles/1591.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/inwind/comments/commentRss/1591.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/inwind/services/trackbacks/1591.html</trackback:ping><description><![CDATA[<p>google file system 这篇文章我也看了，作者的1，2，3点当时都注意到了，可惜没有及时的更新记录，呵呵，这里把这位作者的留下来了：）<br></p><p><br></p><p>=======================================================================================<br></p><p>最近在对现有的搜索引擎进行分布式的改进, 回顾以前阅读过的 google file system 的文章时发现google的思维和我们平时固守的思维很不一样, 可以说很多在我们看来是有一些"偏激"的,可是正是由于这些偏激, 才导致google与其跟随者的不同.</p>
<p>以下为几个例子:</p>
<p>1. google认为, 所有的硬件都是容易产生故障的, 因此google认为故障是必然的, 不产生故障才是偶然现象. 这个想法和我们通常的意识是相反的.</p>
<p>2. Google认为, 一旦写入, 再也不删除和修改. 这点上google认为修改和删除会对系统造成潜在的伤害, 例如文件的不连续性, 文件定位的困难..</p>
<p>3. Google将Linux的 file system的block更改为 64M , 也就是说, 写文件的最小单元是64M, 而不是我们通常的512字节, 两者整整相差了128000倍.</p>
<p>4. Google认为修复是没有必要的, 当一个服务器出现问题的时候, 撤下来, 换上另外一个 google unit(google 单元)即可, 因为维修的成本远远大于直接上线一个全新的服务单元的成本. 说来容易, 其实只有当google结构真正实现高冗余和分布式这样的操作才可行, 而这些正是google的核心.</p>
<p>当我们设计一个系统的时候, 我们最简单的做法通常是会根据需求对已有的一些经验进行匹配, 这个过程中我们通常走的是近路,而且我们的经验常常会束缚我们的想法, 没有抛开经验进行全新的分析和设计, 也自然就难以有所创新.<br></p><img src ="http://www.cppblog.com/inwind/aggbug/1591.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/inwind/" target="_blank">inwind</a> 2005-12-07 13:16 <a href="http://www.cppblog.com/inwind/articles/1591.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>搜索引擎的缓存机制zz</title><link>http://www.cppblog.com/inwind/articles/1590.html</link><dc:creator>inwind</dc:creator><author>inwind</author><pubDate>Wed, 07 Dec 2005 05:14:00 GMT</pubDate><guid>http://www.cppblog.com/inwind/articles/1590.html</guid><wfw:comment>http://www.cppblog.com/inwind/comments/1590.html</wfw:comment><comments>http://www.cppblog.com/inwind/articles/1590.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/inwind/comments/commentRss/1590.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/inwind/services/trackbacks/1590.html</trackback:ping><description><![CDATA[<P>以前曾经提到过搜索引擎的缓存策略, 根据搜索引擎搜索的关键词的统计分布, 可以优化设计搜索引擎的缓存策略. 就普通的缓存策略上讲, 缓存是因为在一定的时间段内的搜索的关键词集中在一定的范围内, 并且这些搜索相对稳定. 例如每天搜索"美女"的人总有10万,20万, 而结果在这段时间相对稳定, 因此没有必要每次去检索索引文件, 而将上一个人搜索的结果直接返回便可以了.</P>
<P>搜索引擎缓存策略也同搜索引擎的算法密切相连, 除了搜索缓存, 索引缓存也是一个好方法. 独立或者分布一些权重较高的文档也是一种提高效率的方法. 例如我们有1000万的网页的权重(可以简单的理解为pagerank)比较高, 那么这些网页的排序相比另外一些权重较低的网页相对较为稳定, 就不妨独立出来进行相对独立的索引缓存.</P>
<P>关于缓存的分布, 一般的小型搜索引擎不会用到, 但是如果每天处理上亿次的搜索, 缓存的分布就应当有一定的分布规划, 例如根据提交的关键词构成hash table, 然后对应于不同的搜索服务器, 实现缓存的分布.</P>
<P>让我们看看实际例子吧, 我们拿百度, google, yisou, 中搜, tag.bokee.com 进行简单的测试:</P>
<P>因为测试, 要搜索一些在过去7天没有人搜索过的关键词, 或者组合词. 为了保证没有人搜索过, 我选择在各个搜索引擎里搜索"a s d f v g h" , 这是我在键盘上随机打出的一些组合, 相信这世界上在7天没有人相同搜索, 这样保证我的第一次的搜索是 fresh search, 就是一定需要搜索引擎去检索索引文件, 而不是通过缓存策略.</P>
<P>以下是结果:<BR>百度: 0.279秒<BR>google: 0.24 秒<BR>一搜: 0.24 秒 <BR>中搜: 0.001秒(无结果!!!!)<BR>博客搜索: 0.041 秒</P>
<P>下面是第二次搜索的结果:<BR>百度: 0.001秒<BR>google: 0.05 秒<BR>一搜: 0.09 秒 <BR>中搜: 0.002秒(无结果!!!!)<BR>博客搜索: 0.019 秒</P>
<P>经过简单的测试, 可以看出缓存机制只有在Baidu和google搜索引擎里都有, 但是各自效率不一样, 如下是简单的比例:</P>
<P>百度: 100<BR>google: 5<BR>一搜: 没有明显的缓存<BR>中搜: 没有明显的缓存<BR>博客搜索: 没有明显的缓存</P>
<P>而在缓存效率上百度要远远大于google, 这点大概是因为google的gfs本身的分布效率已经相当不错, 因此进行缓存也不会有数量级的提升.</P>
<P>而百度, 根据测试可能是集中方式的数据存储, 但是根据搜索进行hash分布, 因此才会在缓存上有显著的提升. (这个属于猜测)</P><A id=more></A>
<P>搜索记录在以下位置:<BR>http://www.wespoke.com/archives/download/se-buffer/baidu1.png<BR>http://www.wespoke.com/archives/download/se-buffer/baidu2.png<BR>http://www.wespoke.com/archives/download/se-buffer/google1.png<BR>http://www.wespoke.com/archives/download/se-buffer/google2.png<BR>http://www.wespoke.com/archives/download/se-buffer/tag1.png<BR>http://www.wespoke.com/archives/download/se-buffer/tag2.png<BR>http://www.wespoke.com/archives/download/se-buffer/yisou1.png<BR>http://www.wespoke.com/archives/download/se-buffer/yisou2.png<BR>http://www.wespoke.com/archives/download/se-buffer/zhongsou1.png<BR>http://www.wespoke.com/archives/download/se-buffer/zhongsou2.png</P><img src ="http://www.cppblog.com/inwind/aggbug/1590.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/inwind/" target="_blank">inwind</a> 2005-12-07 13:14 <a href="http://www.cppblog.com/inwind/articles/1590.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Google网页加速器的工作原理</title><link>http://www.cppblog.com/inwind/articles/1589.html</link><dc:creator>inwind</dc:creator><author>inwind</author><pubDate>Wed, 07 Dec 2005 05:10:00 GMT</pubDate><guid>http://www.cppblog.com/inwind/articles/1589.html</guid><wfw:comment>http://www.cppblog.com/inwind/comments/1589.html</wfw:comment><comments>http://www.cppblog.com/inwind/articles/1589.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/inwind/comments/commentRss/1589.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/inwind/services/trackbacks/1589.html</trackback:ping><description><![CDATA[Google网页加速器的工作原理，其实很简单：Proxy + 缓存。
<P>1. 本地化的Proxy + 缓存<BR>当运行了 google 的网页加速器，本机会启动一个httpd的服务，端口是9100 :<BR>http://127.0.0.1:9100<BR>这个服务实际上是一个本地化的Proxy+缓存，就是所有的 http 的请求都是通过这里走的。那么为什么能够加速呢？</P>
<P>缓存。当你第一次访问一个网页的时候，相当多的图片，静态文字全部的存储下来，然后当你再次访问的时候，就直接从缓存里调出来，因此大大加快了访问速度。</P>
<P>我这里做了一个有趣的试验：</P>
<P>访问我自己的blog一个日志(http://blog.wespoke.com/archives/000907.html)的日志记录：</P>
<P>adsl-69-154-77-102.dsl.rcsntx.swbell.net - - [09/May/2005:12:34:38<BR>+0800] "GET /archives/000907.html HTTP/1.1" 304 -</P>
<P>刷新这个网页，Apache的记录仍然是 304。表明没有传输内容，紧紧验证了<BR>expired的信息。</P>
<P>touch archives/000907.html (改变这个文档的时间标记)<BR>再次刷新，这次不一样了：<BR>adsl-69-154-77-102.dsl.rcsntx.swbell.net - - [09/May/2005:12:35:28<BR>+0800] "GET /archives/000907.html HTTP/1.1" 200 10319</P>
<P>这次是返回了200，并传输了10319个字节。</P>
<P>这个就是工作的原理，在第一种的情况下，节省了10319个字节的传输。</P>
<P>当然，这也是所有的缓存proxy的设计原则。</P>
<P>2. Google 的缓存＋路由<BR>当我发现我访问的日志上记录的IP和我本地的IP不一样的时候，看来Google 自己也还是有缓存服务器的，就是说当我们请求一个网页时，如果联接非常的慢，google会让这个请求通过google的缓存服务器，同时改变路由。这就是为什么看到的IP不是自己机器的IP了。</P>
<P>由此看来，Google的网络加速器实际上是一个个人的小型Proxy缓存服务器＋Google帝国的一个格点状的Proxy缓存服务器系统构成并有效的来管理这些缓存，并非什么特别的技术，而是将大家忽视了多年的一些基本的概念从新应用了起来。</P>
<P>3. 看看这里就更加明白一些：<A href="http://race.google/http://www.wespoke.com"><FONT color=#6f75ab>http://race.google/http://www.wespoke.com</FONT></A>，注意，必须启动了加速器后才能连接，因为google Web Accelerator讲这个域名解释为本机并采用Iframe显示。您可以将http://www.wespoke.com替换成您想要到达的网页，看看有没有加速？</P>
<P>关于加速的原理，你应该了解expired模块。</P>
<P>http://httpd.apache.org/docs/mod/mod_expires.html</P><img src ="http://www.cppblog.com/inwind/aggbug/1589.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/inwind/" target="_blank">inwind</a> 2005-12-07 13:10 <a href="http://www.cppblog.com/inwind/articles/1589.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>集中/分布式搜索引擎的4种设计方案zz</title><link>http://www.cppblog.com/inwind/articles/1588.html</link><dc:creator>inwind</dc:creator><author>inwind</author><pubDate>Wed, 07 Dec 2005 05:07:00 GMT</pubDate><guid>http://www.cppblog.com/inwind/articles/1588.html</guid><wfw:comment>http://www.cppblog.com/inwind/comments/1588.html</wfw:comment><comments>http://www.cppblog.com/inwind/articles/1588.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/inwind/comments/commentRss/1588.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/inwind/services/trackbacks/1588.html</trackback:ping><description><![CDATA[<P>对于搜索引擎, 在索引量和搜索量大到一定程度的时候, 索引更新的效率会逐渐降低, 服务器的压力逐渐升高, 因此基本上整个搜索引擎的利用率可以说是越来越低了, 并且随着海量数据存储带来的困难, 设计一个良好的分布式搜索引擎将是一个搜索引擎能否面相未来发展的关键因素了.</P>
<P>那么分布式搜索引擎的最主要的核心问题是哪些呢?</P>
<P>1. 分布的信息获取和计算以及对此进行的数据统一<BR>这里面包括爬虫/或者相应的数据获取机制的分布, 对信息进行加工的统一管理</P>
<P>2. 数据处理后的分布存储和管理<BR>主要是文件的准确定位和更新,增加,删除,移动的机制</P>
<P>3. 前端搜索服务的分布<BR>主要处理大规模并发请求时的分发机制</P>
<P>基于以上3个基本需求, 基本上可以构造如下4类的分布式搜索引擎:<BR>1. 分布式元搜索引擎<BR>2. 散列分布搜索引擎<BR>3. P2P 分布搜索引擎<BR>4. 局部遍历型搜索引擎</P>
<P>下面逐步介绍以上4类可扩展的搜索引擎:<BR>1. 分布式元搜索:<BR>拥有多个单个的搜索引擎, 中心搜索引擎是利用这些分布的单个的搜索引擎的结果进行撮合得到完整的结果. <BR>这样的设计方案要求各个单元的搜索引擎拥有相同的排序算法和基本相同的数据输出结构，以便由中心搜索进行整理。<BR>对于这类的搜索引擎，关键的设计是要求每一个单元所拥有的索引不构成重复，但是进行数据的采集（爬虫）时可以采取独立的系统获取后再按照规则分布到各个单元上。<BR>优点，设计简单，快速，并且任何一个单元可以随时的摘掉但并不影响太大。<BR>缺点，对于大规模的并发并非好的解决办法</P>
<P>２．散列分布搜索引擎<BR>根据Query对索引服务器和文档服务器进行散列，做到对于任何的索引词能够准确的定位到具体的索引服务器并从而定位到正确的文档服务器。</P>
<P>优点，抗压，设计简单<BR>缺点，对于单个索引服务器或者文档服务器的容量等动态的调整较困难</P>
<P>３．Peer 2 peer 搜索引擎<BR>著名的Napster就是这样的一种设计，利用集中方式的索引，配合分布于世界各地的单个的计算机形成的文件源，构成了世界上最庞大的p2p搜索引擎之一。<BR>这种设计里的中心索引服务器只记录一些相对关键的信息，例如位置（IP，序列号），歌曲的名字，作者等，其它的信息一概可以从任何在线并且拥有本条全面信息的计算机上获取。同时p2p也可以根据搜索建立一些中间路由的缓存，即将一些搜索结果存在单个或者相近的节点上，加快搜索速度。</P>
<P>优点，可以超级大，基本上不需要有维护成本<BR>缺点，中心服务器的更新效率很低，信息源不稳定</P>
<P>4. 局部遍历型搜索引擎<BR>这类的搜索引擎又可以采用多种设计方案，其中比较可行的是对信息进行聚类后建立信息树，搜索时只需要从树的一个分支下去遍历便可以了。局部遍历应当有一定的规则，并且在设计初期就需要对每一个加入的索引进行相对准确的位置安排，使得放置在合适的节点上，以保证搜索的效率。</P>
<P>优点，容易解决抗压，搜索精度高，搜索效率高<BR>缺点，设计复杂，调整索引所在节点的位置不易</P>
<P>总体来说，搜索引擎的设计方法可以很多，这里只是抛砖引玉，相信未来会有更多的巧妙的设计方案出现。</P><img src ="http://www.cppblog.com/inwind/aggbug/1588.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/inwind/" target="_blank">inwind</a> 2005-12-07 13:07 <a href="http://www.cppblog.com/inwind/articles/1588.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>