【发布时间】:2014-04-21 19:57:58
【问题描述】:
我正在做一个学术项目(一个搜索引擎),这个搜索引擎的主要功能是:
1/-crawling
2/-storing
3/-indexing
4/-page ranking
我的搜索引擎将抓取的所有网站都在本地可用,这意味着它是一个Intranet 搜索引擎。
在存储爬虫找到的文件后,需要快速提供这些文件以进行缓存。
所以我想知道存储和检索这些文件的最快方法是什么?
想到的第一个想法是使用FTP或SSH,但这些协议是基于连接的协议,连接、搜索文件和获取文件的时间很长。
我已经阅读了有关 google 的解剖结构,我看到他们使用数据存储库,我也想这样做,但我不知道如何。
注意:我使用的是 Linux/debian,搜索引擎后端是使用 C/C++ 编码的。 帮助!
【问题讨论】:
-
为什么不是简单的数据库?以 MySQL 为例。如果存储容量很关键并且您可以承受计算开销,您可以压缩内容。
-
当然可以,但是在主题中,他们告诉我们不允许数据库存储 HTML 文件:/ 还有第二种方法
-
我不明白您所说的“提供”文件是什么意思。对于 FTP/SSH,您是否谈论过“服务”页面,或者在找到它们后如何获取它们以便 为它们提供服务(使用其他东西?)最好通过 HTTP 提供网页,这不是一个选择吗?如果您必须为此编写一个自己的服务器应用程序,请尝试找到一个作为库的 HTTP 服务器实现,或者如果您不允许使用一个,请自己编写一个非常简单的实现。然后,只需提供您抓取到硬盘上的缓存文件。
-
好的,但是当爬虫需要一个文档(HTML文件)时,我需要通过HTTP来提供它吗,如果爬虫可以直接访问文件而不需要下载页面,那就太酷了?跨度>
-
现在您的爬虫听起来像是从您自己的应用程序中抓取的。这真是令人困惑。我是这样理解的:我以为你想缓存网页内容。您的爬虫会爬取其他一些网页并将其存储为文件。您编写了一些以某种方式为这些(“缓存”)文件提供服务的应用程序。搜索发生在缓存文件上(带有一些索引以加快速度)。