构建一个Web搜索引擎

时间:2008-09-21 21:35:49

标签: search search-engine

我一直对开发网络搜索引擎感兴趣。什么是开始的好地方?我听说过Lucene,但我不是一个大家伙。还有其他任何好的资源或开源项目吗?

我知道这是一个巨大的考虑因素,但这是吸引力的一部分。我不打算创建下一个Google,只是我可以用来搜索我可能感兴趣的子网站。

9 个答案:

答案 0 :(得分:51)

搜索引擎有几个部分。从广义上讲,以一种绝望的方式(如果您觉得可以添加更好的描述,链接等,那么可以自由编辑):

  1. 抓取工具。这是通过Web,抓取页面并将有关它们的信息存储到某个中央数据存储中的部分。除了文本本身之外,您还需要访问它的时间等等。爬虫需要足够聪明才能知道访问某些域的频率,遵守robots.txt约定等。

  2. 解析器。这将读取爬网程序提取的数据,对其进行解析,保存所需的任何元数据,丢弃垃圾,并可能向爬网程序提供下次要获取的内容的建议。

  3. 索引器。读取解析器解析的内容,并在网页上找到的术语中创建反向索引。它可以像你想要的那样聪明 - 应用NLP技术来制作概念索引,交叉链接,投入同义词等等。

  4. 排名引擎。鉴于有几千个匹配“apple”的网址,您如何确定哪个结果最佳?但是索引没有给你那些信息。您需要分析文本,链接结构以及您想要查看的其他任何内容,并创建一些分数。这可以完全在飞行中完成(这非常困难),或者基于一些预先计算的“专家”概念(参见PageRank等)。

  5. 前端。有些东西需要接收用户查询,点击中央引擎并做出响应;这个东西需要对缓存结果很聪明,可能混合其他来源的结果等。它有一系列问题。

  6. 我的建议 - 选择您最感兴趣的那些,下载Lucene或Xapian或任何其他开源项目,拉出执行上述任务之一的位,并尝试替换它。希望有更好的东西:-)。

    某些可能有用的链接: "Agile web-crawler",爱沙尼亚的一篇论文(英文) Sphinx Search engine,索引和搜索API。专为大型数据库而设计,但模块化和开放式。 "Information Retrieval,一本关于曼宁等人的IR的教科书。很好地概述索引是如何构建的,出现的各种问题,以及一些关于爬行等的讨论。免费在线版本(现在)!

答案 1 :(得分:6)

Xapian是另一种选择。我听说它比Lucene的一些实现更好。

答案 2 :(得分:6)

查看nutch,它是由创建Lucene(Doug Cutting)的同一个人写的。

答案 3 :(得分:5)

在我看来,最大的部分是网站的索引。制作机器人来搜索互联网并解析其内容。

我和一位朋友正在讨论谷歌和其他搜索引擎有多么神奇。数百万的结果在不到半秒内?疯。我认为他们可能预设了常用搜索项目的搜索结果。

编辑: This网站看起来很有趣。

答案 4 :(得分:4)

我将从现有项目开始,例如Wikia的开源搜索引擎。

[我的理解是Wikia搜索项目已经结束。但是,我认为参与现有的开源项目是一种轻松实现这种规模的工作的好方法。]

http://re.search.wikia.com/about/get_involved.html

答案 5 :(得分:1)

如果您有兴趣了解信息检索背后的理论以及实施搜索引擎背后的一些技术细节,我可以推荐Ian Witten,Alistair Moffat和Tim C. Bell的书Managing Gigabytes。 (披露:Alistair Moffat是我的大学主管。)虽然它现在有点过时了(第一版出现在1994年,第二版出现在1999年 - 现在管理千兆字节有多难?),基础理论仍然是合理的,它是在索引和检索系统中对索引和压缩的使用进行了很好的介绍。

答案 6 :(得分:1)

我也对搜索引擎感兴趣。我推荐了Apache Hadoop MapReduce和Apache Lucene。通过Hadoop Cluster获得更快是最好的方法。

答案 7 :(得分:0)

有Lucene的港口。 Zend有一个免费提供。看看这个快速教程:http://devzone.zend.com/node/view/id/91

答案 8 :(得分:0)

如果您对它的编程不是很感兴趣但对结果更感兴趣,请采用稍微不同的方法:考虑使用Google Custom Search Engine API构建它。

优点:

  • Google为您做了所有繁重的工作
  • 为用户提供熟悉的用户界面和行为
  • 可以在几分钟内完成并运行
  • 许多自定义功能

缺点:

  • 你不是在编写代码,所以没有学习机会
  • 您要搜索的所有内容都必须是公开的&已在谷歌索引中
  • 您的结果与Google相关