欢迎来到天天文库
浏览记录
ID:21799753
大小:54.50 KB
页数:5页
时间:2018-10-24
《sphinx python oracle构建全文检索系统》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、SphinxPythonOracle构建全文检索系统目前,很多大型企业的CRM系统在构建时都是采用Oracle作为数据库,本文正是为这类系统提供一个可以作为参考实现的基于Sphinx的站内全文检索系统的实现方法。 关键词全文检索;Sphinx;站内检索 TP392A1674-6708(2011)54-0171-02 1Sphinx简介 Sphinx是一个在GPLv2下分发的全文检索软件包,是SQLPhraseIndex的缩写。它最初开发的目的是为了在数据库驱动的X站中寻找解决索引质量、搜索性能等各方面的问题而开发的一个高性能独立的全文搜索软件包,所以它可
2、以非常容易的与SQL数据库集成,为数据库驱动的X站提供高质量、高性能的站内搜索。 当前,Sphinx系统内置了MySQL和PostgreSQL数据库数据源的支持,也支持从管道标准输入读取特定格式的XML数据。但是,目前Sphinx还不支持直接将Oeacle数据库作为数据源,但在最新的版本中,添加了Python数据源支持,这极大的扩展了数据源的,我们可以操作Python脚本作为数据源来获取Oracle中的数据。 2Python数据源操作Oracle数据库的设计与实现 考虑到安全、性能等因素,目前,很多大型的X站,尤其是大型企业的CRM系统,在数据库构建方面都
3、采用了Oracle数据库。基于此,我的研究正是基于Oracle构建的大型企业CRM系统,借助Sphinx软件包提供全文搜索功能,同时结合MMSeg中文分词软件包来为X站生成一个功能强大的站内搜索引擎。 2.1系统目标 本系统要实现一个基于Oracle数据库构建的企业CRM系统的高效的全文检索系统,并保证查询性能和查询结果的准确性,具体应满足以下两方面要求: 1)在数据量较大时具有较高的查询性能,在海量数据检索时仍能保持较快的响应速度和准确率; 2)以CRM系统在Oracle数据库中所存储的数据为检索目标,系统提供易于操作和使用的查询接口,用户可以通过该系
4、统检索CRM系统上所有的X页内容。 2.2所需软件包 Coreseek:基于Sphinx研发的支持中文全文检索的软件包,可以从Coreseek官方X站中获得,同时还可以获得源代码和二进制包。该发布包中目前主要包括一个创建全文索引的indexer;一个用于测试的search;一个守护进程searched以及一系列的客户端API。 Python:利用Python操作数据库获取数据。 cx_Oracle:Python操作Oracle所必须的扩展包。注意根据Oracle和Python的不同版本下载不同的cx_Oracle扩展包。 2.3系统实现 1)系统配置
5、文件 db.conf数据库配置文件,其中主要是对每批次读取的文件数目、数据库服务器地址、端口号、用户名、密码以及数据库默认的字符集等相关信息进行配置,供Python读取。 sphinx.conf是检索服务的配置文件。该文件主要是定义了数据源类型、索引及它们所在位置,同时该文件中还定义了searched服务的相关参数。对于数据源的类型及所在位置的定义如下: 2)Python定义数据源 Python类定义为MainSource,程序主要是结合cx_Oracle中的API链接Oracle数据库,并从中检索数据,Python中包含的主要方法及其相关描述如下:
6、 GetScheme:返回所有需要被索引的字段的属性; GetFieldOrder:获取字段的优先顺序; Connected:连接数据库; NextDocument:获取实际的需要参与检索的数据,按条获取,需要获取的字段,作为self自身的属性给出,每次读取一条数据。 3)创建索引 索引的数据可以有各种各样不同的:SQL数据库、纯文本、文件等等。对于本系统来说,索引的数据则于Oracle数据库,并最终形成结构化文档集合形式的索引数据,而这个结构化的文档集合对于搜索引擎的性能和检索数据质量的影响是至关重要的。因此如何建立一个高效的索引是实现搜索引擎所必
7、须面对的挑战。 由于大型企业的CRM系统无时无刻都有数据更新,如果每次都是更新整个索引表,势必会有非常大的系统开销,从而影响性能。因此,在我们的系统中设置两个数据源和两个索引,一个主索引,主要是针对于那些从不更新或很少更新的数据;另一个是增量索引,主要是针对于那些更新频率非常快的数据。这样,系统采用“主索引+增量索引”(maindelta)模式来实现“近实时”的索引更新。 在配置文件sphinx.conf中对应的主索引和增量索引的定义如下: 4)Java调用SphinxAPI实现全文检索功能 Sphinx提供了PHP、Python、Perl、Rudy
8、和Java搜索API支持
此文档下载收益归作者所有