从零开始学习搜索引擎(1)---Searcharoo.net 版本 1

本文介绍搜索引擎的工作原理,包括两个主要步骤:建立目录和查找信息。详细解释了如何使用哈希表进行目录构建,并介绍了两种文件查找方式:蜘蛛和爬虫。此外还提供了一个用于递归查找文件的爬虫算法示例。

搜索引擎有两个主要步骤:

  • 建立。即处理文件,导航内容并且建立目录。
  • 查找。利用建立的目录进行查找,针对关键字进行查找。 

  要建立这样一个目录,有两种手段,一是二叉查找树,二是哈希表,searcharoo第一版为了保持简单,选择了哈希表。建议最好熟悉哈希表的建立过程,我也需要补补。

  按原文,searcharoo的对象模型如下:

 一个目录对象包含许多 单词 对象,一个 单词 对象又包含许多 文件 对象。在学习的过程中,我发现,这个单词跟我们中文的单词是不一样的,searcharoo第一版是针对英文搜索,所以分词只需通过空格。如果想要对中文分词,也有不少工具。

 

 注:ctor是构造函数。

File:成员就不解释了,简单易懂。

Word:

  • text:存放单词
  • InFiles():返回单词所在的所有文件。
  • add():向word对象中的哈希表添加File对象。

Catalog:成员就不解释了,简单易懂。

 

查找文件的方式有两种:

1、蜘蛛。通过在html的网页的网络链接,去查找整个网站。

2、爬虫。利用文件系统,爬一系列的文件和文件夹,找到所有的文件。但这种方式只限于locally accessible。

 

 像google,yahoo这样的大型搜索引擎,是通过蜘蛛的方式,去建立他们的目录。通过一个链接去查找文件,要求我们去写一个html转换器,这个转换器可以找到链接并且解释它。这对于一篇文章工作量太大,所以使用爬虫的方式。

 

用爬虫方式查找文件,只需通过下面的递归算法可找出所有文件。

ExpandedBlockStart.gifView Code
private void CrawlPath (string root, string path) {
    System.IO.DirectoryInfo m_dir 
= new System.IO.DirectoryInfo (path);
    
// ### Look for matching files to summarise what will be catalogued ###
    foreach (System.IO.FileInfo f in m_dir.GetFiles(m_filter)) {
        Response.Write (path.Substring(root.Length) 
+ @"\" + f.Name + "<br>");
    } 
// foreach
    foreach (System.IO.DirectoryInfo d in m_dir.GetDirectories()) {
        CrawlPath (root, path 
+ @"\" + d.Name);
    } 
// foreach

 未完待续。

转载于:https://www.cnblogs.com/skywithcloud/archive/2011/08/18/2144690.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值