12-校园网web搜索引擎的设计与实现2011-8-21
- 格式:pdf
- 大小:345.66 KB
- 文档页数:5
Web搜索引擎设计和实现分析一、引言随着Internet的飞速开展,人们越来越依靠网络来查找他们所需要的信息,但是,由于网上的信息源多不胜数,也就是我们经常所说的"Rich Data, Poor Information"。
所以如何有效的去发现我们所需要的信息,就成了一个很关键的问题。
为了解决这个问题,搜索引擎就随之诞生。
现在在网上的搜索引擎也已经有很多,比拟著名的有AltaVista, , InfoSeek, Metacrawler, SavvySearch等等。
国内也建立了很多的搜索引擎,比方:搜狐、新浪、北极星等等,当然由于它们建立的时间不长,在信息搜索的取全率和取准率上都有待于改良和提高。
Alta Vista是一个速度很快的搜索引擎,由于它强大的硬件配置,使它能够做及其复杂的查询。
它主要是基于关键字进展查询,它漫游的领域有Web和Usenet。
支持布尔查询的"AND","OR"和"NOT",同时还加上最相近定位"NEAR",允许通配符和"向后"搜索〔比方:你可以查找到某一页的所有Web站点〕。
你可以决定是否对搜索的短语加上权值,在文档的什么部位去查找它们。
能够进展短语查询而不是简单的单词查询的优点是很明显的,比方,我们想要查找一个短语"to be or not to be",如果只是把它们分解成单词的话,这些单词都是属于Stop Word,这样这个查询就不会有任何结果,但是把它当作一个整体来查询,就很容易返回一些结果,比方关于哈姆雷特或者是莎士比亚等等的信息。
系统对查询结果所得到的网页的打分是根据在网页中所包含的你的搜索短语的多少,它们在文档的什么位置以及搜索短语在文档内部之间的距离来决定的。
同时可以把得到的搜索结果翻译成其他的语言。
Exite是称为具有"智能"的搜索引擎,因为它建立了一个基于概念的索引。
基于Python技术的校园网搜索引擎的设计与实现校园网搜索引擎是一种通过网络检索校园网中信息的工具,它能够将分布在校园网上的信息资源进行整合、分类和检索,方便用户快速找到所需的信息。
随着校园网信息资源的日益丰富和多样化,校园网搜索引擎的重要性也日益凸显。
本文将介绍基于Python技术的校园网搜索引擎的设计与实现。
我们将分析校园网搜索引擎的需求和特点,然后介绍Python技术在搜索引擎开发中的优势,最后详细介绍校园网搜索引擎的设计和实现过程。
一、校园网搜索引擎的需求和特点1. 需求随着互联网技术的发展,校园网上的信息资源越来越丰富,包括学术论文、课程资料、教学资源等各种类型的信息。
校园网搜索引擎需要能够对这些信息资源进行高效检索,方便用户查找所需信息。
2. 特点校园网搜索引擎与传统的互联网搜索引擎相比,有一些独特的特点:(1)信息资源相对集中:校园网上的信息资源大多来自学校的官方网站、教师和学生发布的学术论文等,相对来说信息资源比较集中。
(2)用户群体明确:校园网搜索引擎的用户主要是学校师生,其搜索需求相对集中,主要包括学术资料、教学资源等。
(3)安全性要求高:校园网搜索引擎需要对搜索结果和用户信息进行严格的控制和保护,确保信息安全。
二、Python技术在搜索引擎开发中的优势Python是一种简单易学、功能强大的编程语言,适用于各种类型的应用开发。
在校园网搜索引擎的设计与实现中,Python技术具有以下优势:1. 强大的数据处理能力:Python语言有着丰富的数据处理库和工具,能够快速高效地对大数据进行处理和分析。
2. 多样的网络编程库:Python支持多种网络编程库,能够方便地实现Web页面抓取、信息提取等功能。
3. 丰富的第三方库支持:Python有着丰富的第三方库支持,能够满足搜索引擎开发中各种需求,大大提高开发效率。
4. 易于维护和扩展:Python语言具有清晰简洁的语法结构,易于维护和扩展,能够快速响应需求变化。
基于Python技术的校园网搜索引擎的设计与实现【摘要】这篇文章将介绍基于Python技术的校园网搜索引擎的设计与实现。
在我们将探讨建立该搜索引擎的动机和意义。
在系统架构设计中,我们将讨论系统的整体结构和各个模块之间的关系。
数据抓取与处理部分将介绍如何从校园网站抓取数据并进行预处理。
索引建立与检索部分将展示如何构建搜索索引并实现检索功能。
用户界面设计将介绍搜索引擎的界面设计和交互功能。
性能优化部分将探讨如何提升搜索引擎的性能和用户体验。
结论部分将总结设计与实现过程的经验和成果,展望搜索引擎的未来发展方向。
这篇文章将全面介绍基于Python技术的校园网搜索引擎的设计与实现过程。
【关键词】Python技术、校园网搜索引擎、设计、实现、系统架构设计、数据抓取与处理、索引建立与检索、用户界面设计、性能优化、引言、结论1. 引言1.1 引言在当今信息爆炸的时代,校园网已经成为学生们获取资讯、交流学习的重要平台。
随着校园网信息量的不断增加,如何高效地获取所需信息成为了一个挑战。
设计一种高效的校园网搜索引擎成为了迫切需要解决的问题。
基于Python技术的校园网搜索引擎通过使用Python语言编写程序,充分利用其简洁、易读、强大的特点,实现了对校园网中信息的快速检索和准确定位。
本系统采用了先进的数据抓取和处理技术,能够及时获取并更新校园网上的信息。
通过建立有效的索引系统,用户可以快速地找到他们所需要的信息。
在用户界面设计上,我们注重简洁易用的原则,让用户能够轻松地进行搜索和浏览。
为了进一步提升系统的性能,我们还对搜索引擎进行了性能优化,确保用户能够获得更快速、更准确的搜索结果。
通过本文将详细介绍基于Python技术的校园网搜索引擎的设计与实现过程,希望能为学生们提供一个更便捷、高效的校园网信息检索工具。
2. 正文2.1 系统架构设计系统架构设计是校园网搜索引擎设计中至关重要的一环,其合理性和稳定性直接影响到整个系统的性能和效果。
web搜索引擎的设计与实现摘要随着网络的迅猛发展。
网络成为信息的极其重要的来源地,越来越多的人从网络上获取自己所需要的信息,这就使得像Google[40],百度[39]这样的通用搜索引擎变成了人们寻找信息必不可少的工具。
本文在深入研究了通用搜索引擎基本原理、架构设计和核心技术的基础上,结合小型搜索引擎的需求,参照了天网,lucene等搜索引擎的原理,构建了一个运行稳定,性能良好而且可扩充的小型搜索引擎系统,本文不仅仅完成了对整个系统的设计,并且完成了所有的编码工作。
本文论述了搜索引擎的开发背景以及搜索引擎的历史和发展趋势,分析了小型搜索引擎的需求,对系统开发中的一些问题,都给出了解决方案,并对方案进行详细设计,编码实现。
论文的主要工作及创新如下:1.在深刻理解网络爬虫的工作原理的基础上,使用数据库的来实现爬虫部分。
2.在深刻理解了中文切词原理的基础之上,对lucene的切词算法上做出了改进的基础上设计了自己的算法,对改进后的算法实现,并进行了准确率和效率的测试,证明在效率上确实提高。
3.在理解了排序索引部分的原理之后,设计了实现索引排序部分结构,完成了详细流程图和编码实现,对完成的代码进行测试。
4.在完成搜索部分设计后,觉得效率上还不能够达到系统的要求,于是为了提高系统的搜索效率,采用了缓存搜索页面和对搜索频率较高词语结果缓存的两级缓存原则来提高系统搜索效率。
关键词:搜索引擎,网络爬虫,中文切词,排序索引ABSTRACTWith the rapidly developing of the network. Network became a vital information source, more and more people are obtaining the information that they need from the network,this making web search engine has become essential tool to people when they want to find some information from internet.In this paper, with in-depth study of the basic principles of general search engines, the design and core technology architecture, combining with the needs of small search engine and in the light of the "tianwang", lucene search engine, I build a stable, good performance and can be expanded small-scale search engine system, this article not only completed the design of the entire system, but also basically completed all the coding work.This article describle not only the background of search engines, but also the history of search engine developing and developing trends,and analyse the needs of small search engines and giving solutionsthe to the problems which was found in the development of the system ,and making a detailed program design, coding to achieve.The main thesis of the article and innovation are as follows:1.with the deep understanding of the working principle of the network spider.I acheived network spider with using database system.2.with the deep understanding of Chinese segmentation and segmentation algorithm of lucene system,I made my own segmentation algorithm,and give a lot of tests to my segmentation algorithm to provide that my segmentation algorithm is better.3.with the deep understanding of sorted and index algorithm,I designed my own sorted and index algorithm with the data-struct I designed and coding it ,it was provided available after lots of tests.4.after design of search part,I foud the efficiency of the part is not very poor,so I designed two-stage cache device to impove the efficiency of the system.Key words: search engine,net spider, Chinese segmentation,sorted and index目录第一章绪论 (1)1.1搜索引擎出现的背景及意义 (1)1.2搜索引擎的发展历史及趋势 (1)1.3本文主要工作 (3)1.4论文结构 (4)第二章系统结构 (5)2.1概述 (5)2.2系统结构 (5)2.2.1爬虫 (6)2.2.2信息处理 (6)2.2.3排序和索引 (6)2.2.4搜索 (6)2.3搜索引擎主要指标及分析 (6)2.4开发语言 (7)2.5小结 (8)第三章爬虫 (9)3.1概述 (9)3.2爬虫结构分析 (9)3.2.1爬虫初始化 (10)3.2.2从网页中提取url (11)3.2.3 URL存储 (12)3.2.4从数据库中提取url (12)3.3小结 (13)第四章信息处理 (14)4.1概述 (14)4.2转换 (15)4.3切词 (18)4.3.1中文切词 (19)4.3.2中文切词测试 (25)4.3.3英文切词 (27)4.3.4数字切词 (28)4.3.5符号处理 (29)4.3.6词语存储 (30)4.4小结 (31)第五章排序索引 (33)5.1概述 (33)5.2统计相关url (33)5.3排序 (34)5.4索引 (36)5.5小结 (37)第六章搜索 (38)6.1概述 (38)6.2实现搜索 (38)6.3性能优化 (41)6.4小结 (42)第七章总结与展望 (43)7.1总结 (43)7.3 展望 (44)参考文献 (47)致谢 (49)第一章绪论1.1搜索引擎出现的背景及意义网络的出现以及发展对于世界发展的意义是极其重要的,它让地球村的理念变成的现实,信息的传输不再受到时间和空间的限制。
基于Python技术的校园网搜索引擎的设计与实现随着网络的不断发展,各大学校都建立了自己的信息化平台,为师生提供更加便利的服务。
然而,在信息海量的背景下,如何快速精准地搜索到所需信息成为一个难题。
因此,设计一款基于Python技术的校园网搜索引擎便成为了一项重要的任务。
该搜索引擎的基本架构如下图所示:该搜索引擎主要由三个模块组成:1. 爬虫模块:负责从校园网上爬取相关信息并进行处理。
2. 索引模块:将爬取的信息进行处理后生成索引库。
3. 搜索模块:读取索引库并进行查询操作。
具体实现如下:爬虫模块:该模块主要使用Python中的urllib模块进行网页爬取,对爬取到的网页进行解析并提取出所需的信息。
爬虫模块负责的主要任务包括:1. 通过网络连接器获取校园网上的相关网页。
2. 对网页进行解析,提取出所需的信息存入列表。
3. 过滤无用信息并对其进行加工处理。
4. 将处理后的信息保存至索引库中。
索引模块:该模块主要对爬虫模块爬取的信息进行处理,生成大量的索引文件供搜索模块使用。
索引模块负责的主要任务包括:1. 将爬虫模块爬取到的信息进行加工处理,去除HTML标签、特殊字符等无用信息。
2. 将处理后的信息进行关键词提取,并将其转化成一个词频统计表。
3. 将词频统计表中的关键词与文档进行对应,生成一个文档关键词对照表。
4. 读取文档关键词对照表,生成多个倒排索引表。
5. 将所有倒排索引表合并成一个总索引表。
1. 读取索引库中的所有倒排索引表。
2. 对用户输入的关键字进行分词操作,生成多个搜索词语。
3. 对搜索词语进行匹配,找到所有含有关键词的文档。
4. 对匹配到的文档进行排序,按相关度高低进行排序。
5. 输出与搜索词语相关的所有文档链接。
总结:本文介绍了一款基于Python技术的校园网搜索引擎的设计与实现。
该搜索引擎分为爬虫模块、索引模块和搜索模块三个部分,主要使用urllib库进行网络连接及网页爬取,对所爬取的信息进行加工处理并生成索引库,实现了快速精准的搜索功能。
本科毕业论文(设计、创作)题目:基于Web搜索引擎的设计与实现Design and Implementation of Web-based search engine摘要网络中的资源非常丰富,但是如何有效的搜索信息却是一件困难的事情。
建立搜索引擎就是解决这个问题的最好方法。
本文首先详细介绍了基于英特网的搜索引擎的系统结构,然后从网络机器人、索引引擎、Web服务器三个方面进行详细的说明。
在次基础上设计并实现了一种快捷高效的新闻搜索引擎,该搜索引擎是从指定的Web页面中按照超连接进行解析、搜索,并把搜索到的每条新闻进行索引后加入数据库,然后通过Web服务器接受客户端请求后从索引数据库中搜索出所匹配的新闻。
关键词:搜索引擎;网络机器人;索引引擎 ;Web服务器AbstactThe network resources are very rich, but how effective search information is a difficult thing. Build a search engine is the best way to solve the problem. This paper first introduced the Internet search engine based on the structure of the system, and then from the network robots, indexing engine, the Web server of the three aspects of the detailed instructions. Based on the time designed and realized a quick and efficient news search engine, the search engine from the Web page in accordance with specified in the connection for analytical, search, and the search to every news indexing of add to the database. Then through the Web server accept client requests from database search index after the news of the match.Keywords: search engine; Network robot; Indexing engine; Web server目录摘要 (2)目录 (4)第一章绪论 (6)1.1搜索引擎出现的背景及意义 (6)1.2搜索引擎的发展历史及趋势 (6)第二章搜索引擎的结构 (9)2.1系统概述 (9)2.2搜索引擎的构成 (9)2.2.1网络机器人 (9)2.2.2索引与搜索 (9)2.2.3 Web服务器 (10)2.3搜索引擎的主要指标及分析 (10)2.4小结 (10)第三章网络机器人 (11)3.1什么是网络机器人 (11)3.2网络机器人的结构分析 (11)3.2.1如何解析HTML (11)3.2.2 Spider程序结构 (12)3.2.3如何构造Spider程序 (13)3.2.4如何提高程序性能 (15)3.2.5网络机器人的代码分析 (16)3.3小结 (18)第四章基于LUCENE的索引与搜索 (19)4.1什么是L UCENE全文检索 (19)4.2L UCENE的原理分析 (19)4.2.1全文检索的实现机制 (19)4.2.2 Lucene的索引效率 (19)4.2.3 中文切分词机制 (21)4.3L UCENE与S PIDER的结合 (22)4.4小结 (25)第五章基于TOMCAT的WEB服务器 (26)5.1什么是基于T OMCAT的W EB服务器 (26)5.2用户接口设计 (26)5.2.1客户端设计 (26)5.2.2服务端设计 (27)5.3在T OMCAT上部署项目 (30)5.4小结 (30)第六章项目总结以及未来工作展望 (31)6.1项目总结 (31)6.2未来工作展望 (31)参考文献 (32)致 (33)第一章绪论1.1搜索引擎出现的背景及意义网络的出现以及发展对于世界发展的意义是极其重要的,它让地球村的理念变成现实,信息的传输不再受到时间和空间的限制。
基于Python技术的校园网搜索引擎的设计与实现校园网是学生、教师和工作人员日常生活和学习工作中必不可少的重要资源。
随着信息量的增加和网页的爆炸性增长,学校网站的信息检索变得越来越困难。
为了解决这一问题,我们需要一个高效的校园网搜索引擎。
本文将介绍一种基于Python技术的校园网搜索引擎的设计与实现。
一、设计目标1. 提高搜索效率。
校园网信息庞大,搜索引擎需要能够快速准确地搜索到用户所需的信息。
2. 提供个性化推荐。
搜索引擎需要能够根据用户的搜索历史和兴趣爱好,为用户推荐相关的内容。
3. 支持多种数据类型。
搜索引擎需要能够搜索网页、图片、视频等多种数据类型。
二、技术选型1. 数据存储:使用MySQL数据库存储网页的索引和元数据。
2. 网页爬取:使用Python的requests库进行网页爬取,并使用BeautifulSoup库进行网页内容的解析。
3. 搜索算法:使用TF-IDF算法进行搜索结果的排序。
4. 推荐算法:采用协同过滤算法根据用户的历史行为为用户推荐内容。
5. 前端界面:使用Django框架搭建搜索引擎的前端界面。
三、实现流程1. 数据收集:使用爬虫技术对学校网站上的各类信息进行抓取,并将得到的网页内容进行解析和存储。
2. 索引建立:对存储在数据库中的网页内容进行分词、去除停用词等预处理操作,并计算每个词的TF-IDF值,建立倒排索引。
3. 搜索功能实现:用户输入搜索关键词后,系统根据倒排索引和TF-IDF算法计算相似度,返回相关的搜索结果。
4. 推荐功能实现:根据用户的搜索历史和行为,系统计算用户之间的相似度,为用户推荐相关的内容。
5. 前端界面实现:使用Django框架搭建搜索引擎的前端界面,用户可以在界面上输入搜索关键词,查看搜索结果和推荐内容。
四、实现效果经过以上的设计和实现,我们的校园网搜索引擎可以高效地搜索到用户所需的信息,并根据用户的历史行为为其推荐相关的内容。
用户可以在搜索引擎的界面上方便地输入关键词,查看搜索结果和个性化的推荐内容。
基于Python技术的校园网搜索引擎的设计与实现校园网搜索引擎是一种能够在校园网中进行信息搜索和检索的工具,可以帮助用户快速找到所需的信息资源。
本文将介绍基于Python技术的校园网搜索引擎的设计与实现。
一、设计目标校园网搜索引擎的设计目标是提供一个高效、准确、全面的搜索服务,满足用户在校园网中查找信息的需求。
具体目标如下:1. 提供快速的搜索速度,能够在短时间内返回搜索结果。
2. 提供准确的搜索结果,能够根据用户的搜索关键词匹配并展示相关的信息资源。
3. 提供全面的搜索范围,能够搜索和检索校园网中的各种类型的信息资源。
二、系统架构校园网搜索引擎的系统架构包括四个主要组件:爬虫模块、索引模块、查询模块和界面模块。
1. 爬虫模块:该模块负责在校园网中爬取信息资源,并将其存储在数据库中。
使用Python的第三方库(如BeautifulSoup、Requests等)可以方便地实现网页内容的抓取和解析。
2. 索引模块:该模块负责将抓取到的信息资源进行索引,以便后续的检索。
可以使用Python的第三方库(如Whoosh等)来构建搜索引擎的索引。
3. 查询模块:该模块负责接收用户的查询请求,并根据用户的搜索关键词在索引中进行匹配。
根据匹配结果,将相关的信息资源返回给用户。
4. 界面模块:该模块负责将查询模块返回的结果进行展示,使用户可以方便地查看和浏览搜索结果。
可以使用Python的web框架(如Flask、Django等)来实现搜索引擎的界面。
三、实现步骤基于上述的系统架构,我们可以按照以下步骤来实现校园网搜索引擎:2. 设计和编写索引模块,使用Python的第三方库实现信息资源的索引构建,并将构建好的索引存储在数据库中。
5. 将上述模块进行整合和测试,确保搜索引擎的各个功能正常运行,并满足设计目标。
基于Python技术的校园网搜索引擎的设计与实现随着学校网络的发展和普及,校园网已经成为学生生活中不可或缺的一部分。
在校园网中,我们经常需要查找和获取各种信息,比如学习资料、教务信息、学校通知等。
为了方便学生们获取各种信息,我们可以设计一个基于Python技术的校园网搜索引擎。
我们需要明确搜索引擎的功能和需求。
在校园网搜索引擎中,我们希望能够提供快速、准确的搜索结果,包括学习资料、教务信息、学校通知等。
为了实现这个功能,我们可以采用以下的步骤来设计和实现校园网搜索引擎:1. 确定搜索范围:校园网中的信息非常庞大,我们需要确定搜索的范围。
根据实际情况,我们可以选择搜索学习资源、教务信息和学校通知等。
2. 收集和建立索引:为了实现快速搜索,我们需要先收集校园网中的信息并建立索引。
可以通过爬虫技术来收集各类信息,并将其存储到数据库中。
建立索引的过程可以借助Python技术中的第三方库,比如Whoosh和Elasticsearch等。
3. 设计查询接口:为了方便用户查询,我们需要设计一个查询接口。
可以通过Web界面来实现用户输入查询关键词,并将查询结果展示给用户。
这个过程可以使用Python的Web开发框架,比如Flask或Django等。
4. 实现搜索算法:根据用户输入的查询关键词,我们需要设计一个搜索算法来获取和返回相关的结果。
可以采用TF-IDF等常用的搜索算法,根据关键词和建立的索引来匹配和排序搜索结果。
5. 优化搜索效果:为了提高搜索效果,我们可以对搜索算法进行优化。
比如可以加入相关性算法,根据用户的搜索历史和点击记录等来调整搜索结果的排序。
通过以上的设计和实现,我们可以得到一个基于Python技术的校园网搜索引擎。
这个搜索引擎可以帮助学生们快速查找和获取校园网中的各类信息,并提供准确的搜索结果。
通过优化搜索效果,可以提高搜索的准确性和用户体验。
这样的搜索引擎将会大大便利学生们的学习和生活。
校园网Web搜索引擎的设计与实现引言随着校园网建设的迅速发展,校园网内的信息内容正在以惊人的速度增加着。
如何更全面、更准确地获取最新、最有效的信息已经成为我们把握机遇、迎接挑战和获取成功的重要条件。
目前虽然已经有了像Google、百度这样优秀的通用搜索引擎,但是它们并不能适用于所有的情况和需要。
对学术搜索、校园网的搜索来说,一个公平的排序结果是非常重要的。
另外,由于互联网上信息量之巨,远远超出哪怕是最大的一个搜索引擎可以完全收集的能力范围。
因此,本着整合校园网资源的目的,为方便广大师生对校园网信息的获取和使用,设计并实现了一个灵活、可配置、具有良好可扩展性的校园网搜索引擎。
1. 搜索引擎的发展在国内很多基于主题领域的小型搜索引擎得到很好的发展。
例如一些音乐搜索引擎以及医药方面的搜索都有很好的应用;在越来越多的学校、企业、比较大型的网站如BBS都开始建立了自己的搜索引擎。
在国外,比较著名的有美国教育资源信息搜索的AskERIC,实现医药文献搜索的Highwire等。
Google公司在2007年决定向小型网站提供专门的搜索服务。
这些都表明,小型专用的搜索引擎将在人们获取Web信息中发挥更重要的作用[1]。
在小型搜索引擎快速发展的同时,越来越多的人致力于研究和发展这些小型搜索引擎开发技术,Lucene和Nutch是其中的代表成果。
Lucene是一个高性能、纯Java的全文检索引擎,完全免费、开源。
Lucene几乎适合于任何需要全文检索的应用,尤其是跨平台的应用。
Lucene为Nutch提供了文本索引和查询服务的API,而Nutch在Lucene的基础上实现了网页收集与搜索[2]。
小型搜索引擎与通用搜索引擎相比有很多优点,由于它本身的信息量小,它不可能取代通用搜索引擎。
但是,它是对通用搜索的很好的补充。
随着Web上信息的进一步扩大,小型搜索引擎也将会进一步发展,其中已经引起人们关注的垂直搜索引擎在未来的搜索将发挥更大的作用。
2. 校园网搜索引擎系统设计本文旨在使用Lucene建立一个适合校园网使用的Web搜索引擎系统,实现对校园网上常用的信息检索,能在较短时间内更新页面信息,有效准确的中文分词功能。
本系统使用网络爬虫对校园网的网络资源进行采集和周期性的更新,利用Lucene对采集信息资源进行索引和检索,从而实现开发一个校园网Web搜索引擎系统。
系统主要由四个模块组成:信息采集模块、信息更新模块、索引模块、搜索模块。
其中索引模块又分为三个部分:解析器(Parser)、分析器(Analyzer)和索引器(Indexer)。
信息采集模块主要是利用网络爬虫实现对校园网网页信息的抓取。
信息更新模块负责对已有的Web信息资源进行周期性的更新,以保证索引的信息与Web 网站信息的一致性。
索引模块负责对存储到数据库的网页文本内容进行索引。
搜索模块负责从索引库中搜索包含查询关键词的文档内容,并负责用户从界面输入查询关键词以及搜索结果信息的返回。
校园网搜索引擎系统设计如图1所示。
图1 系统总体设计图3 校园网搜索引擎详细设计3.1 信息采集模块网络爬虫对整个校园网网站的网页进行抓取,生成新的页面集合存储到MySQL数据库中。
在抓取页面的同时获取页面的文本内容。
由于Lucene只能对文本文件进行索引,要想将网页内容加入到索引库中,必须使用网络爬虫从校园网上抓取网页URL、网页文本内容、网页标题,并保存在MySQL数据库中,然后从MySQL数据库中将网页文本内容读取出来索引。
在使用网络爬虫抓取校园网的URL时,会发现重复URL抓取的现象,一个网页会在多个网页有含有连接。
为了避免在抓取网页中出现死循环的现象,我们在设计数据存储URL 使用唯一存储,只存储一次URL,如果有重复的URL出现,就不在往下抓取此网页以及以下目录的连接。
页面去重放在抓取之前,可以减少重复的索引,从而提高索引的效率。
3.2 页面更新模块设计在进行搜索时,总是希望能准确获取最新的信息。
而每次搜索结果里面总是有死链接或者信息明显过时的页面存在,有些新出现的页面不能被搜索到。
页面更新的功能就是尽量保证本地页面内容和实际页面内容的一致性。
做法就是在信息提取完成后的一段时间(例如3天)后,搜索引擎调用网络爬虫对整个校园网网站的网页重新抓取,生成新的页面集合来取代旧的页面集合。
3.3 索引模块设计索引模块过程分为三个操作阶段:文本提取、分析文本和建立索引,如图2所示。
图2 索引模块流程(1)文本提取文本提取从MySQL数据库中将网页文本内容、网页URL、网页标题等读取出来转换成Lucene的Field。
提取网页文本之后,就要对文本内容进行分析了。
(2)文本分析文本分析在Lucene中是指将Field文本转换成最基本的索引单元项Term。
对于不同的语言,分析器要完成的功能是不同的。
比如说,对英文要将字母转换成小写、除去符号等。
在校园网Web搜索引擎中,主要针对中文搜索,分析器主要需要实现的是中文分词。
在英文中,单词之间是以空格作为自然分界符的。
而中文只是以字、句和段可以通过明显的分界符来简单划分,唯独词没有一个形式上的分界符。
虽然英文也同样存在短语之间的划分问题,但是在词这一层上,中文比英文要复杂的多。
分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。
分词是网页分析索引的基础,分词的准确性对搜索引擎来说十分重要,但是如果分词速度太慢,即使再准确,对于搜索引擎来说也是不可用的,因为搜索引擎需要处理很多的网页,如果分析消耗的时间过长,会严重影响搜索引擎内容更新的速度。
因此,搜索引擎对于分词的准确率和速率都提出了很高的要求[3][4]。
使用Lucene时,选择一个合适的分析器是非常关键的。
对分析器的选择没有惟一的标准。
本系统采用的是分词器是极易分词mmseg4j。
从网站上下载极易分词包,它包含词库和分词jar包。
使用时在tomcat Web服务器的安装目录下找到webapps下的本系统所在文件夹,在其下新建一个classes文件夹用来存放词典和字库,将分词包中data和dic文件复制到classes文件中,接着在WEB-INF下的lib中添加je-analysis-qw-1.5.3.jar文件。
最后用文本编辑器打开schema.xml文件,在<types></types>中加入新的字段类型——text_chinese,并在分词属性中加入类文件的名称"jeasy.analysis.MMAnalyzer",表示在创建索引和查询索引时都使用的是极易中文分词器。
schema.xml文件如下:<fieldType name="text_chinese" class="solr.TextField"><analyzer class="jeasy.analysis.MMAnalyzer" /></fieldType>(3)索引的建立索引就是为了快速搜索大量的文本,先将文件转化成一个快速搜索的数据结构,从而不需要进行缓慢的顺序扫描,这个转化过程称为建立索引。
Lucene采用的是倒排索引结构[5],将输入字符流存储在一个反索引的数据结构中。
这个数据结构在允许关键词查询的同时,有效的利用了磁盘空间。
这个结构的反向是因为Lucene 使用从输入中提取的单词作为查询而不是处理的文档作为查询的入口。
也就是说,这个结构为提供快速查询做了优化。
即形成的关键词到文档号的映射。
仅仅知道关键词在那些文档中还不够,还需要知道关键词在文档中出现的次数和出现的位置。
通常有两种位置:字符位置和关键词位置。
字符位置是记录关键词在文档中是第几个字符(优点是关键词高亮显示时定位快);关键词位置是记录关键词在文档中是第几个关键词(优点是节约索引空间、词组查询快),Lucene同时使用了这两种位置。
以上就是Lucene索引结构中最核心的部分。
关键词是按照字符顺序排列的,Lucene可以用二元搜索算法快速定位关键词。
为了减小索引文件的大小,Lucene对索引还使用了压缩技术。
首先,对文档中的关键词进行压缩,关键词压缩为前缀长度加后缀。
其次,大量用到的是对数字的压缩,数字只保存与上一个值的差值,这样也减小数字的长度,进而减少保存该数字需要的字节数。
在这种索引结构下,文档通常非常小,因而,整个过程的时间是毫秒级的。
3.4 搜索模块的设计对需要的网页文件索引完毕以后,就可以对用户提供搜索服务了。
搜索模块负责接受用户提交的检索请求,并根据请求访问相应的Lucene索引数据库,最后将结果集按照相关度排序后返回给用户。
搜索的处理流程如图3所示。
图3 搜索流程图用户通过用户界面提出搜索请求,Lucene索引器接受用户请求,查找本地索引库,找到与输入相关的内容,按照某种算法排序后将相关结果信息返回给用户。
这里主要利用Servlet技术实现,用户通过POST方法从客户端向服务器端提交查询条件,服务器端通过Tomcat的Servlet容器接收并分析提交参数,再调用系统的搜索模块进行搜索操作。
最后把搜索的结果以HTTP消息包的形式发送给客户端,从而完成一次搜索操作。
搜索结果页面如图4所示。
图4 搜索结果页面4 结论本校园网Web搜索引擎在配置Tomcat服务器后即可投入使用,但要成为一个好的和有用的校园网搜索引擎和教育信息搜索引擎,还面临着许多挑战。
首先,为进一步提高检索准确性,针对中文的特点,需解决人名、地名、专业词汇、新生词汇的识别问题,实现一个自动更新的词典,提高中文分词的准确度;其次需要为校园网用户提供个性化检索服务,个性化排序等功能,满足用户多样的信息需求;其它如网页重要性评估、结果得分算法、用户行为分析等问题。
这些问题有待进一步研究和改进,从而提高校园网Web搜索用户获取知识与信息的效率。
参考文献:[1] 孟晓明. 浅谈搜索引擎及其发展趋势[J].计算机应用,2004(8)34-36.[2] 冯斌.基于Lucene小型搜索引擎的研究与实现[D]. 武汉理工大学,2008.[3] 陈康,滕育平. 中文信息检索引擎的分词与检索技术[J].计算机应用,2004(7)30-33.[4] 蔡勇智.基于最大匹配分词算法的中文词组粗分模型[J].计算机应用,2006(9)12-15.[5] 胡俊,李星. 校园网信息资源搜索引擎的研究与实现[J].计算机工程与设计,2006(7)22-26.。