首頁 php教程 php手册 基于PHP的统一检索系统的设计与实现

基于PHP的统一检索系统的设计与实现

Jun 06, 2016 pm 07:47 PM
php 基於 實現 摘要 檢索 系統 統一 設計

摘要: 通过 设计统一检索系统过程模型,对 网络数据库的检索步骤进行抽象,并 对 网络数据库进行描述,获取网络数据库的检索参数, 实现在 PHP5.0 环境下 网络数据库的统一检索,提高用户检索效率 。 采用 PHP 5.0 开发程序,优势在于优异的字符运算处理速

摘要:通过设计统一检索系统过程模型,对网络数据库的检索步骤进行抽象,并网络数据库进行描述,获取网络数据库的检索参数,实现在PHP5.0环境下网络数据库的统一检索,提高用户检索效率采用PHP 5.0开发程序,优势在于优异的字符运算处理速度和可靠性,通过与Apache 2.0 Web服务器相结合使得统一检索系统具备良好的性能和稳定性。同时,通过构造一个合理的四元组模型实现统一检索系统完整的二次检索。

关键词:统一检索   PHP   CURL   稳定性   二次检索

1 引言

近年来,随着数字图书馆的发展,高校或公共图书馆购买、引进了许多大型专业数据库,如SCIEI、中国学术期刊等,另一方面,各个图书馆提供的OPAC资源也越来越丰富,如此丰富的信息资源和众多的检索途径,为用户快速有效地获取真正所需的文献带来了很大的困难。为了查找所需文献,用户不得不对各个数据库逐一查找和借助网络搜索引擎进行搜索,而得到的却是纷繁复杂的检索结果,检索效率难以达到预期目标,主要原因在于:

数据库系统的异构性和分布性;

各数据库彼此独立,用户无法同时检索多个网络数据库,检索结果相对分散;

各数据库的检索依托于特定的检索系统,用户难以理解并掌握众多的检索入口及语法;

网络搜索引擎无法访问动态页面,这为以后台数据库做支持,依靠接收用户请求表单中的信息而动态生成Web页面的检索造成了很大的困难;

某些数据库具有特定的使用权限要求,用户需要在不同的系统间重复注册,增加了用户负担。

针对上述问题,近年来,对异构数据库的集成检索日益得到关注。国内外的相关研究也取得了一定的进展。利用跨库集成检索系统,用户通过一个单一友好的界面,一次向多个Web数据库、搜索引擎提交检索请求,获取更为准确、有序的检索结果。以期在较高查全率下达到较高的查准率和检索效率[1]

2 统一检索系统的过程模型设计

由于各专业数据库和搜索引擎有不同的检索语法和操作符使用规则,在用户确定检索词及基本检索路径后,需要对“提问”进行分析处理。对目标系统不能处理的检索方式进行排除,并选择一种合适方式来匹配,最后根据不同的系统分别转换成可实现检索表达式,有针对性地将“问题”提交给所选定的目标系统,以获取最佳检索效果。

 

 基于PHP的统一检索系统的设计与实现

这个模型是四层:客户端,WEB服务器,应用服务器和资源层。用户只需要在客户端设定好检索信息后(包括检索词和资源选择),利用HTTP协议发送检索请求,检索请求信息传输到应用服务器后,在这里对检索请求进行分析,然后通过ODBCJDBC访问本地数据库,HTTP协议访问WEB检索系统和Z39.50访问远程资源,得到检索结果后加以整理,然后通过WEB服务器传到客户端。很显然,在这个模型中用户只需要一次设置,一次检索,最后一次就可以得到在传统检索中多次检索才能得到的检索结果,检索效率得到了很大的提高。

3 统一检索系统的实现

31  PHP

由于PHP建立在行业标准和Internet标准之上,集成了一些常用的Internet组件,如:CURL,采用性能优异的CURL访问组件,该组件远程访问速度比传统方式速度快了近200倍,采用FOPEN方式对于100HTTP文件请求每分钟只能打开10个,而采用CURL组件方式对于2000HTTP文件请求每分钟可以打开2000[3]。此外PHP可以非常方便地处理与HTTP协议有关的一些操作。另外,采用面向对象和基于类库的设计可相当方便地将系统以Web应用或Web Service形式发布。跨库检索系统实现的难点主要在于性能和稳定性的实现,采用PHP5.0作为开发工具,优势主要在于优异的字符运算处理速度和可靠性,通过与APACHE 2.0 Web服务器的组合使得跨库检索系统具备了良好的稳定性和性能[4]

基于上述理由,我们决定采用PHP5.0作为开发工具来实现统一检索系统。

32 网络数据库的描述

在跨库检索系统对各网络数据库进行处理之前,首先需要一种方法来描述各数据库的配置信息。我们采用了SQL SERVER 2000来存储各数据库的配置信息,主要存储了以下信息:

数据库基本信息,包括数据库在系统内部名称(英文)、对应模板、在原始检索系统中的内部数据库名称、字段映射解析类型、数据库中文名称、提供商、检索字段、原始网址、数据库类型、数据库语种等。

数据库模板字段映射基本信息,包括检索项、检索关键词、附加查询字符串、字符编码方式、翻页参数等。

数据库模板检索表达式信息,包括二次检索时逻辑与或非的表示等。

得到元数据引用点等信息,包括检索结果每页显示条数、命中记录数周围内容、检索结果数据引用点位置、原始网络数据库起始页码、原始网络数据库翻页增量、数据引用点表格头信息、详细信息(点击篇名后)数据引用点位置等。

得到检索结果的过程描述信息,包括数据库首页的浏览、登录以及提交检索条件、填写数据库检索条件等过程。

得到详细信息(点击篇名后)的过程描述信息。

得到全文的过程描述信息。

33 统一检索系统的程序实现

1网络数据库的检索参数分析

如果我们知道所要检索的网络数据库的URL和查询字符串的构成,那我们就可以通过HTTP协议来访问已有的网络数据库。我们就以我所的清华同方CNKI中国学术期刊全文数据库为例。

我所清华同方CNKI中国学术期刊全文数据库的镜像地址是:http://cnki.gsinfo.net.cn/kns50/Navigator.aspx?ID=1

打开这个网页,我们可以看出,它可供选择的参数有:论文范围,排序,匹配模式,论文年度,每页显示记录数,最后就是布尔检索的设置,最多可设置5个。我们还要分析网页中的JavaScript代码,看看这些检索参数是如何编码然后传送到WEB服务器的。一定要注意里面的隐藏参数,同时要注意表单的提交方式(POST或者GET),为了得到所有查询字符串参数,可以借助于工具软件Sniffer来获取。经分析得到的参数如下:

ID=1                     //代表当前检索的是中国学术期刊全文数据库

order=dec                //代表检索结果按降序排列

searchmatch=1           //代表检索匹配方式为精确

yearstart=1979          //代表检索起始年限为1979

yearend=2006          //代表检索终止年限为2006

RecordsPerPage=20    //代表检索结果每页显示20

SearchRange=All     //代表检索范围为所有专辑

searchInResult=0    //代表不是在结果中检索

TableType=PY

display=Chinese   //代表检索结果显示为中文

encode=gb       //代表检索结果编码方式为gb2312

userright=

VarNum=1         //代表检索项为1

hdnIsAll=true

NaviField=

NaviDatabaseName=CJFDZJCLS//代表当前检索数据库导航名称是中国学术期刊全文数据库

systemno=

hdnFathorCode=sysAll

TablePrefix=CJFD

advancedfield1=      //代表检索项,如:篇名

advancedvalue1=     //代表检索关键词,如:计算机

2网络数据库的代理检索程序实现

    以下是代理检索程序的简单实现:

$url = “http://cnki.gsinfo.net.cn/brief.aspx”;

$param = "data1=" . $data1 . "&data2=" . $data2;        //POST数据生成

ob_start()                                           //打开输出缓冲区

$ch = curl_init();                                    //初始化会话[5]

curl_setopt( $ch, CURLOPT_URL, $url );               //设定目标URL

curl_setopt( $ch, CURLOPT_HEADER, 0 );              //设定HEADER()

curl_setopt( $ch, CURLOPT_POST, 1 );               //设定表单发送方式为POST

curl_setopt( $ch, CURLOPT_POSTFIELDS, $param );   //POST数据

curl_exec( $ch );                                //发送请求

$retrievedhtml = ob_get_contents();             //返回内部缓冲区的内容

ob_end_clean();                        //删除内部缓冲区的内容并关闭内部缓冲区

curl_close( $ch );                    //会话结束

                                   //$retrievedhtml进行分析、处理得到元数据

?>

现在提取的信息就在$retrievedhtml中,然后就可以对页面内容进行分析,得到元数据和检索的格式。HTML文件进行分析,我们就可以得到我们所要的详细信息,然后将它显示出来。有全文的就可以得到下载全文的信息。

目前的检索系统都应用了Session技术,为了解决Session过期的问题,我们采用了检索时一次性释放检索系统Session会话的机制,当翻页时再次建立检索系统Session会话。

4

本文介绍了基于PHP的统一检索系统的设计与实现,它能满足网络数据库跨库检索的需要。但由于从各个数据源直接检索得到的结果存在一定的重复性和无序性,需要对其加工处理,主要包括:结果去重,即删除可能被多个独立系统同时检出的结果记录;结果排序,指根据记录的发布时间及相关度作出判断,来比较各个目标系统得到的记录并进行重新排序。这些功能的实现通常由系统通过Agent把检索结果以某种统一元数据形式建立临时数据库,并对其进行筛选、排序,然后以XML文档形式反馈给用户。此外,系统可以使用XML进行网络数据库的描述及实现,为了节省用户总的检索时间,可以实现并发检索,虽然PHP不支持多线程,但目前PHP可以嵌入JAVA,并发检索可以由JAVA来实现。这些有望在系统的下一版本中实现。

参考文献:

1刘晓娟. Web资源集成中的XML应用研究与实现. [D]. 北京:北京师范大学,2004.

2朱虎明.数字图书馆中统一检索系统的研究与开发. [D].西安:西安电子科技大学,2004.

3 http://curl.haxx.se/libcurl/php(Accessed Jan.9,2007)

4曹方,施韶亭.基于Web过程模拟的异构数字文献统一检索系统设计与实现[J].情报学报,2006,255:575-579.

5 http://cn.php.net/manual/zh/ref.curl.php(Accessed Jan.9,2007)

 

 

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1317
25
PHP教程
1268
29
C# 教程
1243
24
在PHP API中說明JSON Web令牌(JWT)及其用例。 在PHP API中說明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

解釋PHP中的晚期靜態綁定(靜態::)。 解釋PHP中的晚期靜態綁定(靜態::)。 Apr 03, 2025 am 12:04 AM

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

php程序在字符串中計數元音 php程序在字符串中計數元音 Feb 07, 2025 pm 12:12 PM

字符串是由字符組成的序列,包括字母、數字和符號。本教程將學習如何使用不同的方法在PHP中計算給定字符串中元音的數量。英語中的元音是a、e、i、o、u,它們可以是大寫或小寫。 什麼是元音? 元音是代表特定語音的字母字符。英語中共有五個元音,包括大寫和小寫: a, e, i, o, u 示例 1 輸入:字符串 = "Tutorialspoint" 輸出:6 解釋 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。總共有 6 個元

什麼是PHP魔術方法(__ -construct,__destruct,__call,__get,__ set等)並提供用例? 什麼是PHP魔術方法(__ -construct,__destruct,__call,__get,__ set等)並提供用例? Apr 03, 2025 am 12:03 AM

PHP的魔法方法有哪些? PHP的魔法方法包括:1.\_\_construct,用於初始化對象;2.\_\_destruct,用於清理資源;3.\_\_call,處理不存在的方法調用;4.\_\_get,實現動態屬性訪問;5.\_\_set,實現動態屬性設置。這些方法在特定情況下自動調用,提升代碼的靈活性和效率。

PHP和Python:比較兩種流行的編程語言 PHP和Python:比較兩種流行的編程語言 Apr 14, 2025 am 12:13 AM

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

PHP行動:現實世界中的示例和應用程序 PHP行動:現實世界中的示例和應用程序 Apr 14, 2025 am 12:19 AM

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

PHP:網絡開發的關鍵語言 PHP:網絡開發的關鍵語言 Apr 13, 2025 am 12:08 AM

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP的持久相關性:它還活著嗎? PHP的持久相關性:它還活著嗎? Apr 14, 2025 am 12:12 AM

PHP仍然具有活力,其在現代編程領域中依然佔據重要地位。 1)PHP的簡單易學和強大社區支持使其在Web開發中廣泛應用;2)其靈活性和穩定性使其在處理Web表單、數據庫操作和文件處理等方面表現出色;3)PHP不斷進化和優化,適用於初學者和經驗豐富的開發者。

See all articles