面向主题搜索引擎的实现与优化

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

摘要:主题搜索是搜索引擎发展的一个新方向。Lucene 是目前优秀的搜索引擎开源软件之一。文章以BBS 搜索引擎为载体,研究了面向主题搜索引擎的实现和优化,提出了JE 中文分词实现方法,针对BBS 文本结构特性,改进和优化了Lucene 检索评分算法,构建了一套高性能的主题搜索引擎实验系统。通过对水木清华等BBS 信息的采集和测试,证明了该主题搜索引擎的性能和效率得到较大改进和提高。

关键词:搜索引擎;Lucene ;BBS 搜索;中文分词

刘兆伟1黄永峰2(1.北京师范大学信息科学与技术学院北京100875;

2.清华大学电子工程系网络研究所北京100084)

面向主题搜索引擎的实现与优化

随着web 2.0时代的到来,互联网上每天都有海量信息生成、共享和更新。搜索引擎的出现为人们提供了对海量互联网资源快速定位和检索的工具,并逐渐在信息检索领域占据主导地位。随着网络资源以几何速度增长,一个搜索引擎很难收集所有主题的网络资源。因此,

面向主题的搜索引擎以其高度的目标化和专业化成为搜索引擎下一步的发展方向。

本文分析了传统搜索引擎存在的不足,介绍了Lucene 的体系结构,以BBS 搜索引擎为载体,研究了面向主题搜索引擎在特定领域的优化方法,设计并实现了个性化的BBS 主题搜索引擎,通过实验验证系统的效率。

1通用搜索引擎分析

传统搜索引擎即通用搜索引擎是指面向网页的全文检索服务系统。通用搜索引擎的优点是信息量全、覆盖面广。但随着互联网资源的不断膨胀,通用搜索引擎会出现查询不准确、深度不够等问题,很难满足当前用户的检索需求。当用户需要对特定领域信息做详细了解时,例如用户想了解关于“求职”的信息,同时又要求信息是关于建筑行业的,这种需求通用搜索引擎很难准确满足。在此背景下,针对某一

特定领域或者特定需求对该领域信息进行深度发掘的主题搜索引擎的出现就有其必然性。

2主题搜索引擎的实现与优化

2.1

面向主题搜索引擎的优点

主题搜索引擎相对通用搜索引擎有以下几个优点:(1)针对性强。针对某一特定领域、某一特定人群或某一特定需求提供有一定价值的信息和相关服务。(2)检索精确。因为其信息资源是针对特定主题的,因而可以很好地提高检索的准确度。(3)检索多元化。面向主题搜索引擎可以更深入地挖取特定领域的信息,根据用户的需要进行多元化的检索。

下面以面向BBS 主题搜索引擎为例,研究主题搜索引擎在特定领域内的实现和优化。2.2

面向主题搜索引擎框架

面向主题搜索引擎的体系结构与通用搜索引擎的结构类似,大致分为数据采集、信息预处理、创建索引和检索系统四大核心模块。整体结构图如图1所示。2.3

主题数据采集

与通用爬虫不同,主题爬虫由于仅专注于某一主题的Web 子集,因而能够对该领域进行更深入的挖掘和更及时的数据更新。BBS 主题搜索引擎采用的是

收稿日期:2011-06-24

29

数据通信2011.4

主题爬虫,可以根据BBS 的特点,进行面向BBS 主题的信息采集,在抓取时更有针对性,有选择地进行页面抓取,尽量多地抓取与主题相关度高的网页。保证数据采集的专业性和更新的实时性。2.4

网页信息预处理

页面信息抽取:大部分论坛站点具有很多的共

性,例如每个BBS 站点在各自讨论区的版面、网页信息的布局结构模板基本类似。

同一个BBS 论坛站点其网页的模板基本一致。以清华大学的水木社区站点为例,页面截图如图2所示。

由图2可见该网页有效信息的主体内容分为发信人、信区、文章标题、发信站、文章正文以及来源几个部分,这为网页信息特定抽取提供了便利条件。初步解析后的信息存储如图3所示。

中文分词:在一个搜索引擎中,搜索速度的快

慢、搜索效率的高低、搜索准确度的高低在很大程度上取决于分词的优劣。

Lucene 本身自带S ta ndardAnalyz er 类,用来实现分词。这个分词器是基于单字的分词,由于中文和英文形状和语法上的巨大差异,单字切分使中文的查询准确度降低,而中文分词的准确度往往直接影响搜索引擎的查询效果和用户体验。如查询“中国”,结果中可能会把含有“位于中间的国家”或其他的网页检索出来。

本BBS 主题搜索引擎采用了JE 分词系统进行中文分词。JE 分词是一套用Ja va 编写的分词软件,其性能被广泛认可。它采用了正向最大匹配的中文分词算法,提供多项功能,如可设定分词粒度参数、增加词典动态扩展能力、整理优化词库、全面支持Luce ne 系统等。2.5

索引系统

索引系统通过Index Writer 类来创建索引,这个过程使用了4个相关的类:Analyz er 、Directory 、Do cu-me nt 和Field 。本系统针对BBS 个性化搜索的需求对文章的标题、讨论区、发文日期、作者、来源、主题ID 、文章ID 、回帖总数、最后回帖时间、网页URL 和文章正文内容分别创建域(Field )进行索引存储,以方便检

索器根据用户的特定需求进行相关域的检索。Lucene 的索引系统同时支持增量索引以及对索引库的更新和删除功能,方便管理索引库。2.6

检索系统

Lucene 的权值计算公式:

Lucene 的权值计算公式是采用空间向量模型

。通过该公式对倒排索引表中每个词语的权值进行计算,用于检索排序的权重分数参考。其具体公式如下:

图2BBS 论坛页面截图

图1面向主题搜索引擎结构图

图3解析后的页面截图

Technology Discussion

30

score(q,d)=coord(q,d)×queryNorm(q)×

tinq

(tf(tind)×idf(t)2×t.getBoost()×norm(t,d))

其中参数含义为:t:Term,指包含域信息的Te rm。同一个词在不同的域里也属于不同的Term。如title:wo rld和co nte nt:world是不同的Term;

tf(t in d):Te rm t在文档d中出现的词频;

idf(t):包含Term t的文档数量;

co ord(q,d):表示如果一篇文章中包含的搜索词越多,该文档的打分越高;

query No rm(q):计算查询条目的方差和,此值不影响排序,仅使不同查询词之间的分数便于比较,其具体的计算公式如下:

queryNorm(q)=

1

q.getBoost()2×∑

tinq (idf(t)×t.getBoost())2

%姨

no rm(t,d):标准化因子;包括3个参数:do cum ent boo st:此值越大,说明文档越重要;field boost:此值越大,说明此域越重要;lengthNorm(field):一个域中包含的Term总数越多,文档越长,此值越小;文档越短,此值越大。

no rm(t,d)的具体计算公式如下:

norm(t,d)=d.getBoost()×lengthNorm(field)

×∏

field in d

feild.getBoost()其中,

lengthNorm(f)=

1

num of term s in field f %

各种ge tBoo st:是可以人为调控的参数。例如,如果认为标题域的权重高于正文域,可以在建立索引时设定fie ld.s etBoos t(N),其中N是人为设定的权重参数。检索时,若搜索词query在文章A标题域中出现,而仅在文章B的正文域中出现,则文章A的计算打分会高于B,说明A与该搜索词的相关度更高。

针对BBS的特点改进Lucene权值计算公式:针对BBS页面,如果仅按照Lucene通用的权值计算公式来衡量一个帖子的重要程度是不够准确的。一个帖子的重要与否,其评判标准与其他类型网页的评判标准有两点不同:(1)回帖数:回帖数目体现了文章的被关注度,本系统认为回帖数越多的帖子重要程度越大;(2)时间:论坛的帖子大部分都是讨论性的话题,具有时效性,大部分人往往关注最新发生的事情。根据最后回帖的时间可以获取文章的最后被关

注时间。本系统认为文章的最后回帖时间越新,此文

章越重要。

再针对BBS网页内容特征,对Lucene的权值公式

进行改进,改进后的公式如下:

score(q,d)=∑

t in q

queryScore×∑

t in field

fieldScore

queryScore=coord(q,d)×queryNorm(q)×idf(t)

fieldScore=t.getBoost×tf(t in d)×idf(t)

×relpyNorm(d)

replyNorm(d)=

Format(now-lastTime)×10-16

(replies+1)×numofdoc sin index

%

由上面的公式可见,在Lucene原有打分机制的

基础上,根据BBS网页的特点,加入了回帖和时间综

合影响因子replyNorm(d),同时保留了原有的t.g e t-

Bo o st调控因子。改进后的计算公式可以使与搜索词

相关度较高的文章自动排在检索结果的靠前位置,

提高了检索准确度。

BBS主题搜索引擎的检索查询系统:一个有效

的检索器要具备检索查询词分析功能、索引文件访

问和查询功能、检索结果的获取和排序功能。这些功

能在Lucene中通过封装好的API和相应的类来实现。Lucene通过几个核心类可以实现多种查询和检索功能。

Lucene使用Index S earcher类作为检索的主要控

制器。通过Analyzer类进行中文分词,再用Query

P ars er类对指定域进行解析,最后通过Index S ea rche r

类的s e arch方法,得到Hits类型的检索结果集。直接访

问Hits结果集里的内容即可得到相关结果。

基于Lucene的BBS搜索引擎可以支持多种检索

方案。基本查询,例如用户输入单个或多个关键词

检索;同时也支持高级查询,例如输入查询“title:科

技AND content:网络”,表示检索标题中含有“科技”

并且正文含有“网络”的页面;也可以指定在标题中

检索、逻辑检索、同一主题文章的特定搜索、在指定

站点内检索等,为用户获取相关信息提供了良好的

体验。

3系统测试与性能分析

为了检验系统的性能,本文提出的搜索引擎在

如下的实验条件中进行测试。

31

相关文档
最新文档