我要用python 建一个快速的检索类网站 很小规模 如果有对此非常熟悉的 推荐一个框架

2024-12-16 11:13:09
推荐回答(4个)
回答1:

PHP开源的jsp商业

谷歌,它是一个大型的搜索引擎原型的大型搜索引擎,搜索引擎被广泛使用的超文本。谷歌的设计,能够有效地把握网络和索引,查询结果优于所有其他现有的系统。这个原型和超连接的数据库的全文至少包含24'000'000页。我们从 http://google.stanford.edu/ 的下载。
设计搜索引擎是一项具有挑战性的任务。搜索引擎的数百数以百万计的网页建立索引,其中包含了大量的非常不同的词汇。每天几十成千上万的查询来回答。在网络中,尽管大型的搜索引擎是非常重要的,但学术界很少研究。此外,由于技术和网页的大量增加的快速发展,建立一个搜索引擎,和三年前完全不同了。
本文介绍了大型的搜索引擎,据我们所知,在已发表的论文,这是第一次在这样的细节描述。除了传统数据搜索技术应用到如此大级别网络所遇到的问题,有许多新的技术挑战,包括超文本应用,以改善搜索结果中的附加信息。
本文将解决这个问题,并说明如何使用该超文本额外的信息,建立一个大型实际系统。任何人都可以自由地在网上发布信息,如何有效地处理这些无组织的超文本集合这篇文章中要注意的问题。
关键词世界资讯网站,搜索引擎,信息检索,PageRank的,谷歌的Web信息检索带来了新的挑战。的快速增长,在网络上的信息,同时,继续经验的用户的Web体验艺术。人们喜欢使用超链接在网上冲浪,通常从网页或搜索引擎如雅虎。我们认为清单(目录)包含每个人都感兴趣的话题,但它是主观的,建立??和维护昂贵的升级慢,不能包括所有深奥的主题。自动的基于关键字的搜索引擎通常返回太多的低质量的比赛。使问题变得更糟的是,一些广告为了赢得误导的自动搜索引擎的人的关注。
我们已经建立了一个大型的搜索引擎解决了很多的问题,在现有的系统中。超文本结构的应用,大大提高了质量的查询。我们的系统命名为谷歌,因为天文数字的流行拼写的名字命名,即10的100次方,而我们的目标是建立一个大型搜索引擎不谋而合。
1.1网络搜索引擎 - 升级(扩大):1994-2000搜索引擎技术必须跟上快速升级(规模很大)的数量增加了一倍的网络。 1994年,第一个Web搜索引擎,万维网蠕虫(WWWW)可以检索到110,000页和Web文档。 1994年11月,顶级的搜索引擎的要求可以检索到2'000'000(除了重复性),100'000'000网络文件(搜索引擎观察)。可以预见,检索到的网页将超过2000家,1'000'000'000。同时,搜索引擎的访问将在以惊人的速度增加。在3月和1997年4月,万维网蠕虫平均每天1500查询。
1997年11月,AltaVista的声称它每天要处理大约20'000'000查询。随着网络用户的增长,到2000年,自动搜索引擎,每天处理数以百万计的查询。我们系统的设计目标是解决很多问题,包括质量和可扩展性,引入升级搜索引擎技术(缩放搜索引擎技术),将其升级到这么大的数据量。
1.2谷歌:跟上的步伐网站(比例与Web)建立一个面临许多挑战和适应今天的网络搜索引擎的大小。抓住网络技术必须足够快,跟上的页面变化的速度(使他们能跟上日期)。的空间必须足够大以存储的索引和文档。指标体系必须能够有效地处理数以百计的数十亿美元的数据。处理查询必须快,而且可以处理数百随着业务的不断增长的Web查询(轻铁接驳每秒钟几百到。),这些任务变得越来越困难。的硬件实现的效率和成本,但是,也迅速增长,部分抵消了这些困难。
有几个值得注意的因素,如磁盘寻道时间(磁盘寻道时间),效率的操作系统(作业系统鲁棒性)。谷歌的工艺设计中,我们考虑了Web的增长速度,但也考虑的技术更新。谷歌的设计升级,以处理庞大的数据集。它可以使用的存储空间来存储索引。优化的数据结构可以快速,高效地访问(见4.2)。此外,我们希望的是,相对于抓取的文本文件和HTML网页的数量,尽可能小的成本存储和索引(参见附录B)。采取这些措施,集中润滑系统,如谷歌的满意系统的可扩展性(缩放性能)。

1.3.1设计目标,我们的主要目标是提高产品质量的Web搜索引擎,提高搜索质量。在1994年,一些人认为,建立全搜索索引(一个完整的搜索索引)可以找到任何数据更容易。最好的Web 1994 - 航海家,“最好的导航服务可以很容易地搜索在网络上的任何信息(当所有的数据都被记录)。”然而,在1997年的网络有很大的不同。最近,搜索引擎的用户已经证实是不完整的索引搜索质量评价的唯一标准。感兴趣的用户的搜索结果往往是失去了在“垃圾垃圾结果”。事实上,直到1997年11月,他以自己名字命名的搜索返回的四大商业搜索引擎唯一一个能找到自己的(前十位的结果)。针对此问题的主要原因是文档索引的数目增加几个数量级,但没有增加数量的用户看到的文档。用户仍然希望看到在前面几十个搜索结果。因此,当收集增加,我们需要的工具,使准确的结果(返回的几十个结果的文件的数目)。选择从成千上万的小的相关文件几十个,其实,这个概念是指最好的文档。高精确度是非常重要的,甚至以牺牲响应(该系统能够返回的总文件数)。好消息是,通过使用超文本链接提供的信息有助于提高搜索和其他应用程序。链接结构和链接文本,提供了大量的相关性判断和质量过滤的信息。谷歌使用的锚文本的链接结构,同时利用(见2.1和2.2节)。
1.3.2搜索引擎的学术研究随着时间的推移,此外的快速发展,网络越来越商业化。在1993年,只有1.5%的Web服务。 com域名。到1997年,超过60%。同时,搜索引擎从学术领域的业务。到现在大多数的搜索引擎公司,一些技术细节的开放性手术。这将导致搜索引擎技术很大程度上仍然是暗箱操作,并倾向做广告(见附录A)。谷歌的主要目标是促进学术界在这方面的发展,据了解。另一个设计目标是给你一个实用的系统。的应用对我们来说,是非常重要的,因为有很多有用的数据(我们是因为我们认为的一些最有趣的研究将涉及利用大量的使用数据是在现代网络系统,提供现代化的网络系统)。例如,每一天都有数以百万计的研究。然而,这些数据是非常困难的,主要是因为他们没有商业价值。我们的最终设计目标是创建一个架构,能够支持新的研究大量的Web数据。为了支持这项新的研究中,谷歌保存在压缩形式的实际抓到的文件。设计谷歌的目标之一是要创造一种环境,使其他研究者能够快速处理大量的Web数据,得到满意的结果通过其他方法进入这个领域,它是很难得到的结果。该系统是建立在一个短的时间内,已被用于在的几篇论文数据库由谷歌,更多的在初始建造。我们的目标是建立一个空间实验室环境里,那里的研究人员,甚至学生可以设计大量的的Web数据或做一些实验。
2。系统的特点是谷歌搜索引擎有两个重要特点,有助于得到精确的搜索结果。
第一点,应用程序的链接结构对网页排名值?计算每个站点,称为PageRank在98详细描述它。
二,谷歌的超链接改进搜索结果。
2.1的PageRank网页排名:Web引用(链接)是一种重要的资源,但今天的搜索引擎在很大程度上被忽视。我们建立了一个518'000'000超链接图,这是一个具有重要意义的样本。这些数字可以快速计算一个网页的PageRank值,这是一个客观的标准,以更好地满足人们的头脑网页上的重要性的评价,建立的基础参考来决定的重要性。因此,网页的PageRank能够优化关键字查询的结果。查询使用的PageRank在网页标题优化简单的文本匹配的主题,我们从google.stanford.edu可以得到惊人的结果(演示)。主要的谷歌系统的全文搜索,PageRank也会帮了不少忙。
2.1.1计算的PageRank文献检索参考理论用在Web页的链接数量在一定程度上反映了一个参考的重要性和质量的页面。 PageRank的发展的想法,页面之间的链接是不平等的。
PageRank的定义如下:我们假设T1 ... TN指向页面(例如,引用)。参数d是制动因子,使在0和1之间的结果。一般,d是等于0.85。将进行详细说明,在接下来的部d。 C(A)被定义为页面一些链接,指向其他页面,第一个的的PageRank值是给定的下列公式:PR(A)=(1-e)+D(PR(T1)/?(T1 )+ ... + PR(TN)/ C(T??N))注意PageRank的形式分配给每个页面的PageRank的所有页面和1。 PageRank或PR(A),可以使用一个简单的迭代算法,相应的归一化的Web链接矩阵的主要特征矢量计算。中型网站26'000'000页面的PageRank值,花了几个小时。还有一些技术细节超出了本文讨论的范围。
2.1.2直观判断的PageRank被看作用户行为的模型。我们认为在网上冲浪是随机的,继续点击的链接,再也没有回来,最终累了,另一个随机选择一个页的简历冲浪。随机访问一个网页的PageRank值的可能性。制动因子d是随机访问一个Web累,随机选择另一页的可能性。单个页面或一组页面,一个重要的变量的制动系数d。这允许个人故意误导系统,以得到较高的PageRank值。我们的PageRank算法,见98。
直觉判断是一个网页有很多网页指向它,或者一些PageRank值高的网页指向它,这个网页是非常重要的。直觉地,在Web中,一个网页由许多web引用,那么这个网站是值得一游。一个网络,如雅虎的主页引用即使一次,也值得一游。如果一个网页的质量不高,或死链接,如雅虎首页没有链接到它。通过网络链接中的PageRank处理这两个因素,并通过递归。
2.2链接描述文字(锚文本)的特殊链接的文本处理搜索引擎。大多数搜索引擎的链接文本和IT连锁的页面(页面的链接)链接。此外,它被链接,指向的网页和链接。这样做有几个好处。
通常链接描述性文字比网页本身更精确的描述页。
链接锚链的文档可能无法进行检索,如图像,程序和数据库的全文搜索引擎。可能返回的网页不能被捕获。注意哪些抓不到的页面会造成一些问题。它们的效力前没有检测到返回给用户。这种情况下,搜索引擎可能会返回一个不存在的页面,但有一个超链接指向它。然而,这样的结果可以单挑,这样的问题很少发生。链接的描述性文本链接到的页面的宣传,这种想法用在万维网蠕虫,主要是因为它有助于搜索非文本信息,扩大搜索范围,可以使用少量的下载文件。我们大量的应用程序链接的文字,因为它有助于提高搜索结果的质量。从技术上讲,有效利用链接描述文字有一定的困难,因为需要处理大量的数据。现在,我们可以捕捉24'000'000检索259'000'000多个链接描述文本的网页。
2.3其他功能除了PageRank和描述性文本链接,谷歌也有其他一些功能。
首先,所有命中的位置信息,所以它可以广泛的应用在的搜索接近(接近)。
谷歌跟踪的视觉外观细节,如字体大小。黑体大的字更重要的是比其他文字。
知识基础保存了原始的全文html页面。
3有关Web检索研究的简要历史。万维网蠕虫()是最早的搜索引擎之一。后来,一些搜索引擎的学术研究,其中大部分是由上市公司拥有。 “优秀论文”今天的搜索引擎技术与Web的增长和搜索引擎的重要性相比,是相当少的。根据迈克尔·莫尔丁(Lycos的公司的首席科学家)),各种服务(包括Lycos)非常关注这些数据库的细节。 “虽然有很多的工作,一些在搜索引擎的功能。代表的工作,现有的商业搜索引擎的结果,通过,或建立小个子的个性化搜索引擎。信息检索系统的研究,尤其是在最后有组织的部门集合(很好的控制集合)。在以下两中,我们将讨论哪些方面需要改进,以更好的工作在Web上的信息检索系统。
3.1信息检索信息检索系统几年前出生,并迅速发展。但是,大多数信息检索系统,研究的对象是一个小规模的组织结构,如科学论文,新闻或相关主题的集合。实际上,主要的基准信息检索,文本检索会议(),小规模的,有组织结构的集合作为自己的基准。
大型文集基准只有20GB,相比之下,我们抓住了24万个网页占147GB。 TREC系统上的良好的工作,在Web上产生良好的结果。例如,标准向量空间模型尝试返回到最相似的文件,查询和文件视为由字组成的向量,出现在他们和查询请求。在Web环境中,这种策略常常返回非常短的文档,这些文档往往是查询词加了几句话,例如,查询“克林顿”,返回的网页只包含“比尔·克林顿吧”这是什么我们看到,从各大搜索引擎在网络上的一些争议,用户应该更准确??地表达自己想要查询,使用更多的话,在他们的查询请求。我们坚决反对这种观点,如果用户提出了这个问题,如“条例草案克林顿“应该得到理想的查询结果,因为有很多高质量的信息到这个话题。给出的例子一样,我们认为信息检索标准需要制定,以有效地处理Web数据。
4系统分析(系统解剖学)首先,我们提供了一个高层次的讨论架构,然后,重要的数据结构的详细描述。最后,主要应用:抓网页,索引,搜索将严格把关。图1。高级别谷歌架构4.1Google体系结构概述在本节中,我们将看看在整个系统如何工作(并且给予了很高的水平),如图1所示。本节不讨论应用程序和数据结构,讨论的章节中,为了提高效率最谷歌是C或C + +实现,无论是在Solaris上,也可以运行在Linux上。
谷歌系统,抓网页(下载页面)完成多个分布式抓取的URL服务器负责提供URL列表中爬行。拍摄的页面存储服务器storeserver的。然后压缩存储服务器“页面,将它们保存到一个知识库,资料库,每个网页都有一个ID,叫的docID当新的URL的网页分析,它被赋予的docID。通过索引和排序索引索引功能。索引读取的文件知识库,其解压缩和分析。每个文档被转换成一组词出现,被称为命中点击数创纪录的词,这个词在文档中,敏感最接近的字体大小。索引的桶桶为一组,分配这些点击产生的部分排序的索引,索引器的另一个重要特征是都在分析的网页链接,最重要的信息的链接描述主播文件。该文件包含足够的信息可用于确定每一个环节掉了链子链的节点和链接文本的URL解析器解析器读了虽然被docID的链接组成的数据库建立链接描述的锚文件,并将其转换成一个绝对的URL转换成文件识别码(ID)相关联的链接描述文字索引,并将它指向的docID的相对URL。用于计算的PageRank值。所有文档。使用的docID分类的桶给了分拣机分拣机分类的wordID,反向索引倒排索引。此操作要恰到好处,所以,几乎没有临时空间。分拣机也DocID和补偿列表,建立倒排索引的组合,这个名单和字典的索引,建立一个新的字典使用的搜索称为DumpLexicon程序。搜索是使用的Web服务器,使用字典所产生的DumpLexicon,使用倒排索引和网页排名PageRank来回答用户的提问。4.2数据结构的谷歌较小的代价抓取大量的文件,索引和查询优化的数据结构。虽然CPU和输入和输出率在最近几年迅速增加。磁盘寻道仍然需要10毫秒。任何时间的Google系统的设计中,尽可能地避免磁盘的目的,这有很大的影响的数据结构的设计上。
4.2.1文件大文件BigFiles多文件所生成的虚拟文件系统,其长度是64位整数的数据处理。在多文件系统空间的分配是自动完成的。BigFiles数据包处理已分配和未分配文件描述符。因为作业系统已不能满足我们的需要,BigFiles也支持基本的压缩选项。 /> 4.2.2知识库图2存储库的数据结构知识库包含了完整的HTML的每一页,每一页的zlib(见RFC1950)压缩。压缩技术的选择是需要考虑的速度将不得不考虑压缩率。选择zlib的速度,而不是bZIP类bZIP类压缩比接近4:1。知识库的高压缩率的,使用zlib压缩比是3:1。在知识库中存储的每个文件下,前缀是?的docID,长度,URL,如图2所示。访问的知识基础,并不需要其他的数据结构。帮助数据的一致性和升级。与其他数据结构重构系统,我们只需要的知识基础和履带式错误列表文件。 /> 4.2.3文件索引文件索引存储的文件的一些信息。指数的docID固定宽度的ISAM(索引顺序访问模式)的顺序排列,每个记录包括当前文件状态,指针的指针知识基础,文件校验和,各种表格。如果文件已被抓获,指针指向文档信息文件,该文件的宽度可变,包含了URL和标题,否则,指针包含的URL的URL列表。这种设计考虑到简单的数据结构,以及在查询中只需要一个磁盘寻道时间将能够访问记录。还有一个文件使用的URL转换的DocId URL校验和相应的docID名单,按检查和排序。要知道一个URL的docID,需要计算URL的校验和,然后执行二进制搜索,校验和文件,找到它的docID。合并这个文件,你可以将一些URL对应的docID。URL解析器,该技术可将URL的docID。此批更新模式是至关重要的,否则,每个环节都需要一个查询,如果使用磁盘,322'000'000链接的数据收集将需要超过一个月的时间。
4.2.4词典词典有几种不同的形式最重要的区别和以前的系统,该词典对内存要求的一个合理的价格。该系统现已实现了256M内存的机器词典加载到内存中。现在这本字典14万字(用几句话添加到词典中)。两部分 - 词汇表(空分隔的连续串)和指针的哈希表执行不同的功能,词汇的一些辅助信息,这是超出本文讨论的范围。
4.2.5命中列表命中列表是一列的话出现在一个文档中,包括位置,大小,资本化。命中列表中占了很大的空间,在正向和反向索引。因此,其代表性的形式,尽可能有效,我们认为的位置,字体大小,资本化 - 简单的编码(三个整数),压缩编码(支持优化的比特分配),和Huffman编码进行编码的几种方案。命中的详细信息,如图3所示,压缩编码命中。 2个字节。有两种特殊击和命中命中,特殊命中包含的URL,标题,链接描述文字,meta标签。普通命中包含了一切,包括资本化标志,字体大小,12位使用描述性词语文件位置标记的位置(4095?4096),字体的相对大小相对于文档的另一部分,占3位(实际上只有七个值,因为111标志是特殊命中)。特殊命中字体的第7位表示的特性敏感的位,这是特殊的命中4比特表示的类型的特殊的命中,表示位置的8位。4比特用于表示锚命中中分离的锚定位置的8位位,4位是用来表示锚出现哈希表哈希值的DocId。短语查询仅限于某些词是不够的锚。我们希望,为了解决地址不足的问题,以更新的锚击店的位和docIDhash的域名中位数。
因为搜索,你会不会把它比任何其他文件,因为文件的字体大小特殊,所以使用相对字体大小。打表的长度存储在命中前打表的长度,以节省空间的正向指标的wordID在一起,倒排索引存储和的docID。这限制了它占8-5位(一些技巧,你可以借用的wordID 8位),如果这些位是大于可表示为的长度,充满溢出代码,接下来的两个字节的实际长度,如图3所示。实际上是积极的指数具有某种正向和反向索引和词汇
4.2.6向前的索引,这是有一定镜筒的wordID。的Word文档中的落入每桶填充有一定的范围内的每个桶中,记录到枪管的docID,然后由这些词语(词汇的文档,或落入的词汇(64桶)。桶)对应的结果列表。这种模式需要更多的存储空间,因为一个多次使用的docID,但这样可以节省数的桶和时间,降低了编码的复杂性,最后分拣机索引的时候。进一步的措施,我们没有存储的docID本身,而是存储相对于桶最小的docID差异。这样一来,我们不是那种桶的docID只有24节省8条黑名单长。
4.2.7倒排索引中的倒排索引外分拣机的处理,提出了索引包含相同的桶。的DocId的字典中的每一个都包含一个指针指向的字桶。它是点的DocId黑名单doclish,这个doclist代表所有的文件,包含了字。doclist的docID的顺序是一个重要的问题,最简单的解决方案是与doclish的排序。这种方法迅速将多个字。另一种选择是使用这个词出现在文档中的排序。方法回答一个词的查询,时间可以忽略不计。多字查询时几乎是从头开始。与其他的排名算法,以改善该指数是非常困难的,我们有这两种方法相结合,建立两套倒指数桶桶黑名单,一组只包含标题和锚击桶的另一组包含所有的结果列表。我们首先检查第一批桶的索引,如果没有匹配的条目,然后检查大组桶。
4.3掌握网络运行的Web爬行机器人是一项具有挑战性的任务。实施的性能和可靠性,更重要的是,有一些社会关注的焦点。网页抓取的参与是一个非常薄弱的??应用程序,它需要成千上万的Web服务器和数百个不同的域名服务器,这些服务器是没有超出我们的控制系统。为了掩盖数十亿的网页,谷歌有一个快速的分布式网络爬行器到服务器的URL网络爬行机器人的数量(3)提供一个URL列表URL服务器和网络爬行机器人都是用Python实现的。每个网页爬行机器人300个链接,可以在同一时间必须足够快。抓取网页的最快时间,有四个网络爬行机器人的爬行100页每秒高达600K每秒。实施的重点是找到DNS,每个网络爬行机器人有它自己的DNS缓存,所以它不具有的每一页进行检查DNS,每百连接有几种不同的状态:检查DNS,连接到主机,发送一个请求到收到回复。这些因素使网络爬行机器人成为一个复杂的系统的一部分,它使用异步IO处理事件,一些请求队列从一个网站到另一个网站的网页抓取运行的链接超过500万台服务器的网页爬行机器人的登陆口产生超过10亿美元,导致大量的电子邮件和电话。因为大量的互联网用户,有些人不知道网络爬行机器人是他们看到的网页爬行机器人。我们几乎每天都会收到这封电子邮件,“哦,你看从我们的网站的页面太多,你要吗?”还有一些人不知道网络搜索机器人避免协议(机器人排除协议)认为,他们的网站上面写着“版权所有,请勿索引词不会被索引得到保护,不用说,这是很难理解的网络爬虫。由于数据量是如此之大,也遇到了一些意想不到的事情。

回答2:

大约1-2天的工作量吧。用自己熟悉的框架。django学习时间略长些,需要一个星期左右的学习。有些框架简单些。比如webware。还有些更简单的。有些人喜欢用turbogear,那是个不错的复杂的框架。也适合快速开发。更pythonic些。

如果什么框架都不想用也可以用cgi方式开发python的简单程序,1-2天就可以熟悉了。apache2+mod_python也是一种开发方式。apache2+cgi开发速度也快。

不过系统的开发方式还是用django吧。

检索通常是需要索引的。索引通常需要放在数据库里,大型的检索需要单独自己管理文件方式的索引。

需要几个模块,登陆,建立索引,查询索引,查看内容,搜索等。django几个结构都可会用到model, view, template。

回答3:

Django

回答4:

强推django,给你一个网站,资料很全的
http://www.itlong.com/forum.php