﻿<?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>BlogJava-iNeo-随笔分类-Search</title><link>http://www.blogjava.net/iNeo/category/6271.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 27 Feb 2007 08:48:50 GMT</lastBuildDate><pubDate>Tue, 27 Feb 2007 08:48:50 GMT</pubDate><ttl>60</ttl><item><title>关于搜索时的相对路径问题</title><link>http://www.blogjava.net/iNeo/archive/2006/08/03/61448.html</link><dc:creator>只牵这只狗</dc:creator><author>只牵这只狗</author><pubDate>Thu, 03 Aug 2006 01:12:00 GMT</pubDate><guid>http://www.blogjava.net/iNeo/archive/2006/08/03/61448.html</guid><wfw:comment>http://www.blogjava.net/iNeo/comments/61448.html</wfw:comment><comments>http://www.blogjava.net/iNeo/archive/2006/08/03/61448.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/iNeo/comments/commentRss/61448.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/iNeo/services/trackbacks/61448.html</trackback:ping><description><![CDATA[我的tomcat工程建在:d:\eclipse\workspace\luc,索引文件是d:\eclipse\workspace\luc\public\index,建立索引的时候路径为"luc\\public\\index",但在搜索的时候,我用<br />searcher = new IndexSearcher(“luc\\public\\index”);<br />报错了，因为lucene在FSDirectory里将我的路径给new File(file.getCanonicalPath());<br />但奇怪的是file.getCanonicalPath()出来路径不对呀<br />错误是<br />java.io.IOException: D:\eclipse\luc\public\index not a directory<br />应该是d:\eclipse\workspace\luc\public\index 才对的<br />郁闷很久了,现在还没办法解决!!!!!!!!!!!!!!!!!!!!!!!!!!<img src ="http://www.blogjava.net/iNeo/aggbug/61448.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/iNeo/" target="_blank">只牵这只狗</a> 2006-08-03 09:12 <a href="http://www.blogjava.net/iNeo/archive/2006/08/03/61448.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Google工程师详述Google的搜索结果排列算法[转]</title><link>http://www.blogjava.net/iNeo/archive/2005/12/23/25203.html</link><dc:creator>只牵这只狗</dc:creator><author>只牵这只狗</author><pubDate>Fri, 23 Dec 2005 06:43:00 GMT</pubDate><guid>http://www.blogjava.net/iNeo/archive/2005/12/23/25203.html</guid><wfw:comment>http://www.blogjava.net/iNeo/comments/25203.html</wfw:comment><comments>http://www.blogjava.net/iNeo/archive/2005/12/23/25203.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/iNeo/comments/commentRss/25203.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/iNeo/services/trackbacks/25203.html</trackback:ping><description><![CDATA[<DIV class=postTitle><A href="http://blog.csdn.net/stevexk/archive/2005/12/22/559502.aspx">Google工程师详述Google的搜索结果排列算法</A>
<SCRIPT language=javascript>document.title="Google工程师详述Google的搜索结果排列算法 - "+document.title</SCRIPT>
 </DIV>
<DIV class=postText><!--StartFragment -->&nbsp; 
<P style="TEXT-INDENT: 2em"><FONT face=楷体_GB2312>本文作者马特-卡兹（Matt Cutts）是Google公司品质管理部门的软件工程师。他的工作主要是给好的网站评定等级，并负责开发阻止虚假或垃圾网站出现在Google搜索结果上的技术。</FONT></P>
<P style="TEXT-INDENT: 2em">图书馆管理员们提出最多的问题之一是：“对于什么样的结果应该位于搜索列表的最上方，Google是如何选择的？”现在品质工程师马特-卡兹介绍了快速入门的知识，解释了Google是如何在网上爬行和索引，以及如何评定搜索结果等级的。马特也向学校图书馆管理员提出建议，告诉他们如何辅导学生。 </P>
<P style="TEXT-INDENT: 2em"><STRONG>爬行和索引</STRONG></P>
<P style="TEXT-INDENT: 2em">在你浏览包含了Google搜索结果的网页之前，要发生很多事情。首先是在万维网数以十亿计的网页上爬行和索引，这个工作是由Googlebot完成的，它负责与全球的网络服务器连接以收集文件。爬行不是真的在网上漫游，而是访问网络服务器返回到一个特定的网页上，接着扫描该网页建立超链接并为每一个网页编上号码。爬行可收集大量的文件，但这些文件还不能直接用于搜索。</P>
<P style="TEXT-INDENT: 2em">如果没有索引，在你想查询如“civil war”（南北战争）等内容时，Google的服务器将不得不在你每次搜索时阅读每一份文件的内容。因此第二个步骤是要建立一个索引，这样就需要“转换” 爬行所获得的数据。为了不必在每一份文件上扫描每一个单词，就需要在数据上做些文章，以便显示包含了特定单词的所有文件。例如，假设单词“civil”在编号为3、8、22、56、68和92的文件上出现过，而单词“war”出现编号为2、8、15、22、68和77的文件上。</P>
<P style="TEXT-INDENT: 2em">一旦建立了索引，就开始对文件进行等级评定并确定它们的相关性。假如某个人上Google搜索并输入“civil war”，为呈现和评价搜索结果需要做两件事：一是查找包含了用户提问的网页；二是按照相关性排定匹配网页的位置。Google已经开发出一个有趣的技术可加速第一步骤的过程：不是将所有索引存储在一台电脑上，而是使用数百台电脑做这种工作。由于任务被分配到很多电脑上，使得查询答案更为迅速。</P>
<P style="TEXT-INDENT: 2em">为更加形象地描述这个过程，可以设想下一本30页厚书的索引。如果一个人在索引中查找数页的信息，那么每一次搜索都至少需要花几秒钟的时间；但如果你将索引的每一页分给不同的人去查找呢？三十个人分别查找索引的不同部分，要比一个人独自查找快的多。同样，Google也是将数据分配到各台电脑上以便可以更快地查找文件。</P>
<P style="TEXT-INDENT: 2em">如何查找包含了用户提问的网页？让我们返回到上面举的“civil war”例子。单词“civil”在编号为3、8、22、56、68和92的文件上，单词“war”在编号为2、8、15、22、68和77的文件上，我们可以在网页上显示文件并寻找包含两个单词的文件（从下表中可以看出是8、22和68号文件）。</P>
<P style="TEXT-INDENT: 2em">单词civil 3 8 22 56 68 92 </P>
<P style="TEXT-INDENT: 2em">单词war 2 8 15 22 68 77 </P>
<P style="TEXT-INDENT: 2em">两个单词都出现 8 22 68 </P>
<P style="TEXT-INDENT: 2em">包含了一个单词的文件列表被称为“文件标识列表”，查找包含两个单词的文件被称为“文件标识列表的交集”。</P>
<P style="TEXT-INDENT: 2em"><STRONG>评定搜索结果</STRONG></P>
<P style="TEXT-INDENT: 2em">有了包含用户提问的网页后，就该按照相关性评定网页了。Google使用了很多技术，其中 PageRank算法是最有名的。PageRank评定的是两种事情：从网站到某一网页有多少个链接，提供链接的网站的排名。使用PageRank，来自 CNN和纽约时报网站的链接的价值，是很多不太有名网站的两倍。</P>
<P style="TEXT-INDENT: 2em">除了PageRank外Google还使用了很多其他技术，例如一份文件所包含的 “civil”和“war”两个单词靠的很近，就比只使用了“war”单词的包含“Revolutionary War”（独立战争）的文件相关性要大的多。另外在题目中出现了“civil war”的网页，它的相关性就比题目为“19th Century American Clothing”（19世纪的美国服装）要重要的多。同样如果“civil war”在网页上出现了数次，比出现一次的网页要相关的多。</P>
<P style="TEXT-INDENT: 2em">Google的目的是要找到知名度和相关性都大的网页。如果两个网页出现匹配提问的信息数量几乎一样，我们常常会选择更有名网站的链接。但如果其他方面表明一个网页更为相关，也会选择更少链接或更低排名的网页。例如，一个网页全篇都是讲“南北战争”的内容，会比只是略微提到“南北战争”的网页更为有用，即使这个网页是出现不太有名的网站上。一旦我们有了文件的列表和分值，就会选择最高分值、最匹配的文件。</P>
<P style="TEXT-INDENT: 2em">Google从包含了提问单词的每一份文件中提取几句话作为摘要显示，接着将排好的URLs和摘要显示在搜索结果上。正如你所知道的运行一个搜索器需要大量的计算资源。每一次搜索需要500台以上的电脑一起工作，搜索的时间还不到半秒钟。</P>
<P style="TEXT-INDENT: 2em"></P><BR><BR>
<P id=TBPingURL>Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=559502</P></DIV><img src ="http://www.blogjava.net/iNeo/aggbug/25203.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/iNeo/" target="_blank">只牵这只狗</a> 2005-12-23 14:43 <a href="http://www.blogjava.net/iNeo/archive/2005/12/23/25203.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>