基于Nutch的用户行为分析搜索引擎的实现

2023-02-25

搜索引擎是一款特别的软件, 能够从互联网上自动搜集信息, 并为用户提供查询服务。搜索引擎对W e b信息进行了一系列的整理、处理和分类, 建立索引, 然后把索引的内容存放到数据库中, 便于查询方式交给用户。用户的查询结果是搜索引擎按照某种规则计算获得的。搜索引擎技术是互联网资源导航和访问的重要手段, 可以有效地帮助用户在网络上查找自己所需要的信息。据C N N I C统计, 搜索引擎已经成为与网络新闻、电子邮件并列的三大W e b应用。搜索引擎的出现到今天不过短短2 0年时间, 从简单的资源检索工具雏形, 到依靠人工分拣的分类目录搜索, 到现在比较成熟的超级连接分析为基础的机器自动搜索, 发展迅速。搜索引擎各个方面的提高空间仍然很大, 未来的搜索引擎将朝着个性化和智能化发展, 未来搜索引擎的分类将更符合用用户需求, 用户使用时与搜索引擎互动性更强。

1 Lucene和Nutch

搜索引擎的底层开发技术过于复杂, 各大搜索引擎厂商对核心技术也严格保密, 完全独立进行搜索引擎的开发, 是一项艰难而又可怕的任务。但是我们只要利用好目前很多开源的搜索引擎和开发包, 就可以实现一个属于自己的搜索引擎。

1.1 Lucene概述

事实上, 最初Lucene是Apache软件基金会Jakarta项目组的一个子项目, 是一个完全开放源代码的全文检索工具包。Lucene的原作者是Doug Cutting。目前最近的Lucene版本是2.4.1。

Lucene的巨大影响不仅仅因为采用了纯J a v a语言开发, 更因为开发者是一位资深的全文检索专家。实现的系统无论从架构还是代码实现, 都很有独到之处, 性能基本可以满足一般的检索系统需求。L u c e n e提供了一系列A P I, 能够对文档进行预处理、过滤、分析、索引和检索排序。在保持高效简单的特点之外, 还保证了开发者可以自由定制和组合各种核心功能。L u c e n e的基本设计原理是索引检索, 通过实现准备好的索引文件, 提高用户检索时的响应速度。通过对文件和资料的全文检索, 保证检索的快速响应。L u c e n e提供的是搜索内核, 任何文档只要转换成文本格式都可以被索引检索。处理的文档内容包括互联网上的W e b页面、各种类型文档或任何其他能够提取文本信息的格式。Lucene能够为应用程序增加索引和搜索能力。

1.2 Nutch

L u c e n e并不是完整的应用程序, 而是一个用于实现全文检索的软件库。2 0 0 4年N u t c h诞生, 它开始只是俄勒冈大学的一个开源项目。2005年加入Apache孵化器, 并于2005年6月正式成为Lucene的一个子项目。同年8月, 发布了Nutch0.7版本, 目前最新版本为Nutch0.9。

Nutch是一个完整的Java应用系统, 以Lucene为基础实现了搜索引擎应用。Nutch由于最初在L i n u x系统下开发, 部分命令接口在windows下需要Cygwin提供shell平台支持。用户可以通过源码对N u t c h进行修改和重新发布, 通过Tomcat等Web服务器可以进行检索。

2 Nutch开源搜索引擎部署

Nutch最近的软件包可以从Apache官方站点下载, 网址为:h t t p://w w w.apache.org/dist/lucene/nutch/, 下载的文件名为nutch-0.9.tar.gz, Windows下可使用Win RAR解压到存放到本地计算机如d:nutch-0.9, 直接作为Nutch的工作目录即可。计算机的配置环境可参照为:Tomcat-6.0+Jdk1.6.0+Nutch0.9。Nutch自带的脚本需要在L i n u x环境下运行, 在Windows下使用Nutch需要Linux仿真环境C y g w i n的支持, 这样才能执行所有的Nutch命令。访问Cygwin首页, 下载http://www.cygwin.com/setup.exe, 保存到本地计算机可以选择在线安装模式, 安装选择安装路径“c:cygwin”, 可按提示操作。在进一步设置环境变量PATH, CLASSPATH, J A V A_H O M E, T O M C A T_H O M E和CATALINA_HOME所有以上工作完成后, 就可以部署N u t c h搜索页面了。

3 基于Nutch的用户行为分析搜索引擎

3.1 搜索功能分析

基于N u t c h的用户行为分析搜索引擎需要处理相关内容定制、相关资源发现、已经获取网页的相关性判断等一系列工作。N u t c h可以支持分布式的存储和管理, 能够满足系统对数据量和检索速度的要求。对于用户需求重新限定与变更, 提供相关检索词功能和相关关键字推荐, 提高检索效率。这些推荐相关词字通过用户检索日志获得, 通过相关固定组合给用户推荐, 通过文本挖掘分析得到。利用服务器日志记录的有关用户访问网站的时间、频率和偏好信息进行分析, 找到那些用户经常访问的而且花了较长时间去浏览的网页, 实际上也就是得到了用户认可的感兴趣的网页, 然后通最大间距排位算法提高这些网页的权值, 使他们在检索结果中的排名越靠前, 综合多个人的兴趣进行信息推荐。

3.2 系统功能设计

根据功能分析, 我们将建立一个能够关联用户行为的搜索引擎, 各个对应软件功能模块及它们之间的关系如图1描述, 具体为: (1) 信息管理控制:控制对Inernet资源的访问, 设置访问的内容属性等相关信息, 并根据服务器日志获取用户行为相关信息; (2) 相关资源发现:及时有效地自动查找并增加相关资源; (3) 相关资源下载:网络爬虫, 提供尽可能相关的原始网页; (4) 文本分析:文本分析预处理提供对相关领域和目标的文本内容的解析, 通常包括内容的模块化提取; (5) 文本相关度判定:针对下载的文档的实际内容, 判断与用户需求的相关性和一致性, 然后判断是否加权、降权或删除; (6) 建立索引:采用一般通用搜索引擎存储格式; (7) 检索服务:提供相关信息的检索服务, 为用户提供及时有效的信息, 推荐相关的信息, 部分满足用户变更需求重新准确定位需求, 减少无关信息, 方便用户能快速定位想浏览的信息, 满足用户获取信息。

3.3 程序设计

我们使用开源N u t c h完成该搜索引擎的主要核心, 编写必要的插件处理, 修改和添加部分程序完善相应模块即可。关键字由于需要经常修改和访问, 存储到数据库中便于管理, 如SQL Server。相关词推荐的两个问题, 关键字的相似度计算算法和词库构造方法。相关词的相似度通常按照字符串的编辑距离来计算, 匹配度比较高的两个词在检索时, 会推出另一个检索词, 作为相关搜索词汇。词库则通过一次性导入或者一段时间用户的累积检索来维护和更新。关键代码如下:

4 结语

搜索引擎将会向功能强大与服务全面的方向继续, 信息的不断增长也要求搜索引擎将向智能化、个性化、精确化、专业化、交叉语言检索、多媒体检索等适应不同用户需要的方向发展。考虑到为了降低工作量和工作难度, 系统开发在N u t c h的基础上实现, 保证了可行性和可靠性。本文在搜索引擎智能化的一个点给出了实现的方案, 即关联用户行为, 使得用户能变更需求或者更加准确的限定自己的需求, 搜索引擎提供了这样对话式的服务。

摘要:Nutch是一个开放源代码的Web搜索引擎, 由于不夹杂商业利益, 它对搜索结果的排序算法较为透明公平。未来的搜索引擎的发展趋势之一是个性化和智能化, 本文在研究开源Nutch的基础上设计实现了一个具有关联用户搜索行为的搜索引擎。

关键词:Lucene Nutch,用户行为,搜索引擎

参考文献

[1] (美) Jeff Heaton.Programming Spiders, Bots, and Aggregator in Java.

[2] (美) Bruce Eckel.Thinking in Java.

[3] 徐宝文, 张卫丰.搜索引擎与信息获取技术[M].清华大学出版社.

[4] 卢亮, 张博文.搜索引擎原理、实践与应用[M].电子工业出版社.

[5] 王学松.lucene+nutch搜索引擎开发[M].人民邮电出版社.

[6] 车东.基于Java的全文搜索引擎Lucene.http://www.chedong.com/tech/lucene.html

[7] 胡涛, 路红英.基于Nutch的搜索引擎的研究[J].计算机时代, 2007/1.

[8] 尹辉.基于Nutch的搜索系统的研究[D].电子科技大学硕士学位论文.

[9] 王斓樾.用户行为分析在搜索引擎中的应用[D].沈阳工业大学硕士学位论文.

[10] http://www.searchenginewatch.com/.

[11] http://searchtools.com/.

[12] http://www.apache.org/.

[13] http://www.cygwin.com/.

上一篇:古代官员的办公场所揭秘下一篇:谈人才的培养和素质教育的关系