路见不平

路见不平,拔刀相助
 
 

Powered by: 博客园
模板提供:沪江博客
博客园 | 首页 | 发新随笔 | 发新文章 | 联系 | 订阅订阅 | 管理

2008年4月11日

自己的搜索引擎1,全文索引1
搜索引擎的第一步,做一个自己的全文引擎,所谓的全文引擎,就是一个倒排表,所谓的倒排表,就是指从词到文档的索引。对于我们通常的文章来讲,是一个文章包含了很多的词,也就是说,文章是关键字,词是内容。那么当我们需要在很多文章中找到所有存在某一个词的文章的时候,在没有倒排索引的情况下,问题出现了,我们必须使用这个词去匹配所有文章的内容,这个效率显然是不能忍受的。这个时候就是倒排索引闪亮登场的时候了,倒排索引就是词是关键字,内容是所有包含这个关键字的文档和位置信息。所以,从理论上来讲,建所引的过程就是从:
    Doc    =>    (Word1,Word2....) 转换成
    Word1    =>    (Doc1,Doc2....)的过程。

    转换的时候,需要考虑一个性能的问题,因为对于一个文档中的每一个词,首先要做得事情就是察看这个词是不是在文章中已经出现过。这里实际上有两个相似的操作,第一个操作是把这个文章的词转换成倒排的格式,第二个操作是把第一步产生的倒排索引合并到达的索引上面去。我觉得还是分开两部操作比较好,因为如果一次性的把文章中出现的词合并到大的索引上面去,会出现很多次没有必要的比较,从而降低性能。
    为了提高创建索引的性能,我想在这里使用一个平衡二叉树,把所有的词作为这个平衡二叉树的节点,这样的话,插入一个节点比较的次数将是ln(n)次的比较,会比线形的n有很大的改善。明天是周末,把这个代码实现了。

To be continued.
posted @ 2008-04-11 21:12 路见不平 阅读(165) 评论(0) 编辑
 
想自己做一个简单的搜索引擎
我是2004年7月份开始做搜索引擎的,到现在也快四年了,期间虽然做过一些和搜索引擎没有关系的杂事,但是基本上算没有中断过。但是总感觉自己对这个东西的理解还是不够深刻,受一个朋友要自己做操作系统的启发,我萌生了自己做一个简单的搜索引擎的想法。我知道自己的缺点,我的缺点就是想法太多,付诸实施的却很少,大部分都是想一想然后就放弃了。我希望这次能够改变我以往的风格,能够把这个事情坚持下去。和以往不同不同的是,我希望以博客的形式,把我这次开发的过程完整的记录下来。

废话不说,先对要做得事情做一个计划吧。


第一步,首先做搜索引擎的核心,做一个全文的引擎,把倒排表建起来。
第二步,倒排表建立好以后,需要做一个查询系统,能支持与或非三种操作,支持纯与条件下的差错查询。
第三步,相关性的排序。

这次算是Version1吧,这次不涉及的东西是蜘蛛,html内容分析提取,中文分词。 OK, Let's go!

(第一个版本我就一个人搞定了,以后如果继续做的话,希望有识之士能够加入。等作到一定的时候,我会申请一个网站,把所有的源代码都公布出来。希望能做出一个中国人自己的Mini版本的Lucene。)
posted @ 2008-04-11 20:28 路见不平 阅读(1126) 评论(2) 编辑