基于XML的站内检索系统

时间:2022-07-05 01:37:49

基于XML的站内检索系统

摘要:为实现可以为单独的网站提供站内全文检索系统,采用独立于专门商业搜索引擎的lucene索引结构,在网站所有的文档基础上,首先使用xml转换技术建立文档的xml索引格式,抽取文档主题内容写入xml链表,索引过程基于伪xml的存储布局。该方法在检索效率和准确性上都有很明显的提高,并且扩展性好,在原来解析链的结构下可以直接增加新的解析模块。

关键词:XML检索;站内索引;文档转换;中文文档检索;lucene xml

中图分类号:TP391文献标识码:B文章编号:1009-3044(2010)02-400-03

The Retrieval System of the Website Based on XML

ZHANG Dong-zhen, ZHANG Ming

(School of Information Engineering College, SMU., Shanghai 200911, China)

Abstract: To realize the website provides for standing alone fulltext retrieval system, using in independent specialized business search engine index structure on the website, lucene all documents, first using XML based on the establishment of an XML document conversion technology index, extracting document formatting XML topic content into a table, index based on chain process of storage pseudo XML layout. This method in retrieval efficiency and accuracy are obviously improved and expansibility, in the original structure of analytical chain can directly increase new analytical module.

Key words: XML retrieval; stand inside index; documents; Chinese document retrieval; lucene xml

XML已经成为互联网上数据表示和数据交换的标准。随着XML文档数据量和文档数量的快速增长,随之而来也产生了很多问题,其中很重要的一个问题就是如何有效的查询这些文档,也就是结构查询,亦称为数据查询。而有效的数据查询又涉及到文档的存储机制和索引结构等问题,这些问题已经引起了学术界和工业界的广泛研究热情,学者们在这些问题上作了大量的研究工作。另外一个问题是基于XML文档的信息检索,这也是一个新产生的研究问题。面对巨大的网络信息,如何才能为用户检索出真正有效的信息是一个非常具有挑战性的研究问题。现存的大部分搜索引擎是基于关键字搜索的,页面排序算法采用页面的超链接或页面内容的文本特性。如果页面采用XML来编写,那么就需要合理的利用XML的结构特性、语义特性以及其它的相关性质,来提高检索的效果和效率。这就促使对XML文档进行信息检索变成了一个非常有意义的问题。

虽然大型搜索引擎的功能已经越来越强大,很多站点都使用了专业搜索引擎网站来代替自己的站内数据库“全文”检索。 但依靠大型搜索引擎做站内检索会有以下弊端:

数量有限:搜索引擎并不会深度遍历一个网站,而将网站所有的内容都索引进去,比如Google倾向于抓取静态网页,而且是最新更新的,而不喜欢带?的动态网页,它甚至会定期将缺少入口的网站内容逐渐抛弃;

更新慢:搜索引擎针对站点的更新频率也是有一定周期的,很多内容需要一定时间后才能进入蜘蛛的索引内容不精确:搜索引擎需要通过页面内容提取技术将导航条,页头页尾等内容过滤掉,反而不如直接从后台数据库提取数据来得直接,这种摘要和排重机制是很难实现的;

无法控制输出:比如更多的输出需求,按时间排序,按价格,按点击量,按类目过滤等

对于软件应用开发者来说:应用和应用之间,企业和企业之间交换的数据,按照严格的XML标准设计的接口作为企业之间后台数据交换的工业标准,虽然不如简单的CSV格式高效,但缺能大大简化下游工序的后期加工成本。

XML 的主要特征主要有以下几方面:

1) XML 的跨平台性:XML 使用文本表示数据,这使得它对于跨平台的数据交换十分方便。XML可以跨越不同的数据库平台。

2) 自描述性:XML 文档的自描述性主要体现在 XML文档包含一个文档类型声明。

3) 灵活性:XML 可以随意定义元素及其之间的关系,可以利用 XML 定义复杂的数据结构,为描述事物之间的复杂联系提供一个解决方案。

4) 方便性:XML 将内容和显示格式分开,内容用 XML文件来表示,显示格式则用 CSS和XSL来描述,当外观变动时,XML文件不受其影响。

XML可以用一种开放的和自我描述的方式定义数据结构,非常容易编写和阅读,使得它成为了异构数据的集成和交换的中介,正是由于 XML具有这些良好的特性,使得它可以作为各种文本或媒体信息和数字信息转换的中介。

1 传统数据库全文检索和XML检索的比较

1.1 让数据库负责精确匹配

一个站点内容积累在万级以上,站内全文检索就会是用户定位最主要的手段,而关键词检索是用户最熟悉的方法。因此基于数据库的传统WEB应用在全文检索需求还是很大的。但是可怕的%like%数据库操作可能会消耗数据库服务器90%以上的CPU。Oracle MSSQL等数据库服务器中数据库内置的全文检索基本上都不太适合WEB应用。而数据库另外一个的弊端在于对于条件简单的查询返回结果集非常大:数据库并不知道如何面向用户最关心的的头100条结果进行优化。根据以前的统计:头100条结果往往已经可以满足95%以上用户需求。需要缓存设计:根据我们的经验,在应用设计中没有必要进行内置的结果缓存设计:让前台的应用服务器内置的缓存机制或者反相缓存服务器进行缓存就够了。

1.2 数据同步策略

总体上讲,全文检索和数据库其实是2种根本不同的应用模式,全文检索系统其实往往也没有必要和数据库那么高的实时同步机制,如果按照:低更新,高缓存的模式进行设计:数据库数据到全文索引的同步过程一般都可以通过脚本定期将数据库的数据导出成XML,然后进入Lucene的全文索引。而针对原有数据记录的更新和删除,其实一般可以通过定期的重建索引解决。

1.3 结果排序策略

站内全文索引另外一个很重要的需求是可定制的排序:按时间,按价格,按点击量……Lucene全文索引缺省只提供了根据关键词在原文中的匹配度排序,而任何根据某个字段的值进行排序的都无法避免再次遍历数据,从而导致性能有数量级的下降(等于又是做%Like%检索),而在索引中,除了匹配度SCORE外,唯一能用来排序的就是索引记录的ID,所以一个比较高效率实现定制排序的方法时:在索引时,让进入Lucene全文的顺序对应着一定规则:比如时间,然后在搜索时,让搜索结果按照索引记录的ID进行排序(或倒排)。

1.4 搜索结果关键词标引的实现

搜索结果中关键词通过红色或者黑体字标记出来,为了能够更恰当的显示相关上下文的问题,标引是通过限制了一个扫描范围,然后根据一个分析器将指定的词流式的读取出来,然后

2系统的实现架构

2.1 xml数据的转换

把普通文档转换为 XML 文档,需要有个转换器。要实现普通数据向 XML的转换,关键是给出普通的内容数据及其关系的一种组织方式,找出这种方式在 XML模式中相应的表达规则,建立普通标识到 XML 模式的一种映射,从而实现从普通内容到 XML 结构的转换。

普通文档直接向 XML 的转换可以借助于ducument以及Fields这样的中转文件格式,在转换过程中采用将普通文档分析加工为 DOM块的形式,在此基础上再做进一步的转换。在java开源软件方面有很出色lucene架构可以实现数据的索引和存储,至于数据转换可以借助于pdfbox或者jacob这样的中间件来实现。

2.2 解析链

解析模块是基于 XML 搜索引擎与普通搜索引擎不同的结构之一,是针对 XML 文档的特点所设计的模块,也是非常重要的一个模块。由于 XML文档是一种半结构化的数据,它的数据包含结构和内容两部分,在对它建立索引前首先必须对它进行解析,将结构信息和内容信息分别提取出来为它们建立索引。解析模块的主要任务是提取 XML

文档的内容信息和结构信息,它由模块中的解析器来完成。解析器的实现也就是继承lucene中的extractor类的解析方法,根据分析的字段信息来确定如何分词或者加入节点等操作。解析器负责对输入的 XML 文档进行解析,解析器实际上设计为一个解析器链,对于文档的分析过程需要分层次来进行,比如中文分词,图表图片的语义的分析等处理过程都应该加入解析链来串行的分析。对于具体内容的抽去过程可以利用接口机制来实现不同文档的内容解析。主要用于区别doc xls,ppt,html这样的数据文本格式,也就是设计一系列的解析链来串行化的实现文件分析过程。

2.3 索引链

搜索引擎的索引部分是整个搜索引擎最关键的部分。在对以前的普通文档数据建立索引时,需要保存的信息是文档中的词项信息,就是某一个词项在哪篇文档中出现,出现了几次以及出现的位置。对 XML 文档数据建立索引时,要保存更多的信息。首先是标签间的数据信息,另外还有标签中的词项信息和文档中标签的嵌套层次信息。

为支持根据元组名、属性名和结构进行查询,即要实现以下三种操作:

① 给定一元组名字符串,比如说“shop”去查找所有具有此名的元组,并把它们按所属的文档分类。

② 给定一属性名字符串,比如说“tokenizer”去查找所有具有此名的属性,并把它们按所属的文档分类。

③ 给定一个元组,查找它的父元组或孩子元组、属性;给定一个属性,查找它所属的元组。

所需实现的索引有:元组索引、属性索引和结构索引。

1) 元组索引。可采用 B+树来实现,利用名字标示作为键值,其叶节点的每一个入口均指向由固定长度的元组记录组成的集合,这些元组具有相同的名字串,并按它们所属的文档

进行分组。利用元组索引可使我们快速地查找出拥有相同名字的所有元组。

2) 属性索引。结构同元组索引类似,不同之处是包含一个值标示,它被当作一个键用于从值表中获得属性值。

3) 结构索引。由线性矩阵组成,每一个线性矩阵都用来存储元组或属性的固定长度记录,这些元组或属性来自于同一个 XML文档。在一个线性矩阵中,元组和属性按照它们的次序

值被一起存储。在每一个记录中,存放有一个名字标示、第一个兄弟的次序值、第一个孩子节点、第一个属性节点等。文件的索引借助于lucene的indexWriter来实现,只需要具体实现继承的子类。

2.4 具体的命令行操作如下

XML数据源的导入:

只要数据源可以导出成3层的XML结构,就都可以用命令行工具导入:

比如从数据库导出:news_dump.xml

文档标题

文档作者

[!Data内容]

2009-10-29

My Title

chedong

[!Data]

2009-10-29

...

IndexDemo -i news_dump.xml -o c:\index -t Title,Content -n Author

-i news_dump.xml:以news_dump.xml为数据源

-o c:\index 索引库建立在c:\index目录下

索引建立Title Author Content PubTime这几个字段外,按以下规则建立索引:

-t Title,Content 一个进行分词的全文索引TokenIndex:数据是Title Content这2个字段

-n Author一个不分词的索引:NoTokenIndex:数据源是Author这个字段。

3 结论

与传统的站内全文搜索系统相比较,基于lucene基础下的xml格式的搜索,在检索效率和扩展性上都很灵活和高效。扩展性要好,而且易于定制搜索,更可以满足用户语义的搜索请求。

参考文献:

[1] 青巴图.从于倒排索引的xML文档全文检索技术研究[D].哈尔滨:哈尔滨工程大学,2007.

[2] 杨卫.面向语义的网络信息资源组织方法研究[D].天津师范大学.2005.

[3] 窦亚君.Luder基于内容的文档搜索引擎[D].天津工业大学,2007.

[4] 姜华.基于Lucene面向主题搜索引擎的研究与设计[D].华东师范大学.2007.

[5] 李四达.全文索引引擎Lucene的研究及其手机中的应用实现[D].华北电力大学,2007.

[6] 刘振峰.基于知识管理的教育资源管理系统研究[D].山东师范大学,2007.

[7] 黄杰.基于Lucene的全文检索系统模型的研究[D].暨南大学,2007.

[8] Denoyer L, Gallinari P. The Wikipedia XML corpus .SIGIR Forum,2006,40,40(1):64-69.

[10] Robertson S E. Overview of the okapi projects .Journal of Pageation,1997,53(1):3-7.

[11] G Gou, R Chirkova. Efficiently Querying Large XML Data Reposi-tories:A Survey[J].Transactions on Knowledge and Data Engi-neering,2007,19(10):1381-1403 .

[12] Fuhr N, G vert N ,Kazai G, et al.INEX:Initiative for the evalua-tion of XML retrieval[C].Proceedings ofthe ACMSIGIR2002Workshop on XML and Information Retrieval. Tampere,Finland: ACMPress,2002, .

[13] AndrewTrotman, B rkur Sigurbj rnsson. Narrowed Extended XPath I(NEXI)[C].Advances in XML Information Retrieval,Third International Workshop ofthe Initiative for the Evaluation ofXML Retrieval,INEX2004.Springer,2004:16-40.

[14] Lu W,Robertson S,Macfarlane A. CISR at INEX2006[C].Comparative Evaluation ofXML Information Retrieval Systems,5thInternational Workshop ofthe Initiative for the Evaluation ofXML Retrieval,INEX2006. Dagstuhl Castle,Germany: Springer,2006:57-63.

[15] A Trotman,B Sigurbj rnsson. NEXI,Nowand Next[C].Ad-vances in XML Information Retrieval,Third International Workshop ofthe Initiative for the Evaluation ofXML Retrieval,INEX2004. Springer,2004:41-53.

[16] Andrew Trotman. Online NEXI Parser[EB/OL].[2008-07-11].metis.otago.ac.nz/abin/nexi.cgi.

上一篇:NET平台下中文语音合成技术的研究与实践 下一篇:基于GML数据源在WebGIS中的研究与应用