我一直感兴趣的发展中一个网络搜索引擎。什么是一个很好的地方开始?我听说的分类:设,但我不是一个大Java的家伙。任何其他良好的资源或开放源码项目?

我理解这是一个巨大的下采取的,但这部分上诉。我不是在寻找创建下一个谷歌,只是一些东西我可以用于搜索的一个子集的网站,我们可能会感兴趣的。

有帮助吗?

解决方案

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

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

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

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

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

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

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

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

其他提示

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

查看 nutch ,它是由创建Lucene的同一个人编写的(道格切割)。

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

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

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

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

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

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

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

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

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

这里有一个稍微不同的方法,如果你不是太感兴趣的节目,但更感兴趣的结果:考虑建立使用 谷歌的定制搜索引擎 API。

优点:

  • 谷歌不会有繁重你
  • 熟悉的用户界面和行为用户
  • 可能有东西启动和运行在分钟
  • 大量的自定义功能

缺点:

  • 你不是在写代码,因此没有学习的机会有
  • 一切你想要搜索的必须是公共&在谷歌的索引已
  • 你的结果是与谷歌
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top