国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
計算機(jī)世界網(wǎng)-基于Linux的搜索引擎實現(xiàn)
搜索引擎是為用戶提供快速獲取網(wǎng)頁信息的工具,其主要的功能是系統(tǒng)通過用戶輸入關(guān)鍵字,檢索后端網(wǎng)頁數(shù)據(jù)庫,將相關(guān)網(wǎng)頁的鏈接和摘要信息反饋給用戶。從搜索的范圍上一般分為站內(nèi)網(wǎng)頁搜索和全局網(wǎng)頁搜索。隨著網(wǎng)頁數(shù)量的急劇增加,搜索引擎已經(jīng)成為上網(wǎng)查詢信息的必須手段,各個大型網(wǎng)站均已經(jīng)提供網(wǎng)頁數(shù)據(jù)搜索服務(wù),并且出現(xiàn)了許多為大型網(wǎng)站提供專業(yè)搜索引擎服務(wù)的公司,如為Yahoo提供搜索服務(wù)的Google,為新浪網(wǎng)和263等國內(nèi)網(wǎng)站提供服務(wù)的百度公司等。專業(yè)的搜索服務(wù)費用高而免費的搜索引擎軟件基本都是基于英文的檢索,所以都不太適合Intranet環(huán)境(如校園網(wǎng)等)的需要。
搜索引擎的基本組成一般分為網(wǎng)頁收集程序、網(wǎng)頁后端數(shù)據(jù)組織存儲、網(wǎng)頁數(shù)據(jù)檢索三部分。決定搜索引擎好壞的關(guān)鍵因素是數(shù)據(jù)查詢的響應(yīng)時間,即如何組織好滿足全文檢索需要的大量網(wǎng)頁數(shù)據(jù)。
GNU/Linux作為一個優(yōu)秀的網(wǎng)絡(luò)操作系統(tǒng),其發(fā)行版本中集成了大量的網(wǎng)絡(luò)應(yīng)用軟件,如 Web服務(wù)器(Apache + PHP)、目錄服務(wù)器(OpenLDAP)、腳本語言(Perl)、網(wǎng)頁收集程序(Wget)等。所以,通過將它們集中進(jìn)行應(yīng)用,便可以實現(xiàn)一個簡單、高效的搜索引擎服務(wù)器。
一、基本組成和使用方法
1、網(wǎng)頁數(shù)據(jù)收集
Wget程序是一個優(yōu)秀的網(wǎng)頁收集程序,它采用多線程設(shè)計能夠方便地將網(wǎng)站內(nèi)容鏡像到本地目錄中,并且能夠靈活定制收集網(wǎng)頁的類型、遞歸收集層次、目錄限額、收集時間等。通過專用的收集程序完成網(wǎng)頁的收集工作,既降低了設(shè)計的難度又提高了系統(tǒng)的性能。為了減小本地數(shù)據(jù)的規(guī)模,可只收集能夠查詢的html文件、txt文件、腳本程序asp和php只使用缺省的結(jié)果,而不收集如圖形文件或是其他的數(shù)據(jù)文件。
2、網(wǎng)頁數(shù)據(jù)過濾
由于html文件中存在大量的標(biāo)記,如<body><table>等,這些標(biāo)記數(shù)據(jù)沒有實際的搜索價值,所以加入數(shù)據(jù)庫前必須對收集的數(shù)據(jù)進(jìn)行過濾。Perl作為廣泛使用的腳本語言,擁有非常強(qiáng)大而豐富的程序庫,可以方便地完成網(wǎng)頁的過濾。通過使用HTML-Parser庫可以方便地提取出網(wǎng)頁中包含的文字?jǐn)?shù)據(jù)、標(biāo)題數(shù)據(jù)、鏈接數(shù)據(jù)等。該程序庫可以在www.cpan.net中下載,并且該網(wǎng)站收集的Perl程序涉及范圍之廣,遠(yuǎn)遠(yuǎn)超出我們的現(xiàn)象。
3、目錄服務(wù)
目錄服務(wù)是針對大量數(shù)據(jù)檢索需要開發(fā)的服務(wù),最早出現(xiàn)在X.500協(xié)議集中,后來擴(kuò)展到TCP/IP中發(fā)展成為LDAP(Lightweight Directory Acess Protocol)協(xié)議,其相關(guān)的標(biāo)準(zhǔn)為1995年制定的RFC1777和1997年制定的RFC2251等。LDAP協(xié)議已經(jīng)作為工業(yè)標(biāo)準(zhǔn)被Sun、Lotus、微軟等公司廣泛應(yīng)用到其相關(guān)產(chǎn)品中,但是專用的基于Windows平臺的目錄服務(wù)器卻較少見,OpenLDAP是免費的運行于Unix系統(tǒng)的目錄服務(wù)器,其產(chǎn)品的性能優(yōu)秀,已經(jīng)被許多的Linux發(fā)行版本收集(Redhat、Mandrake等),并且提供了包括C、Perl、PHP等的開發(fā)接口。
使用目錄服務(wù)技術(shù)代替普通的關(guān)系數(shù)據(jù)庫作為網(wǎng)頁數(shù)據(jù)的后端存取平臺主要基于目錄服務(wù)的技術(shù)優(yōu)勢。目錄服務(wù)簡化了數(shù)據(jù)處理類型,去掉了通用關(guān)系數(shù)據(jù)庫的費時的事務(wù)機(jī)制,而是采用全局替換的策略對數(shù)據(jù)進(jìn)行更新,其應(yīng)用的重點是大量數(shù)據(jù)的檢索服務(wù)(一般數(shù)據(jù)更新和檢索的頻率比例要求在1:10以上),強(qiáng)調(diào)檢索速度和全文查詢,提供完整的數(shù)據(jù)備份,非常適合搜索引擎之類服務(wù)的需要。從目錄服務(wù)技術(shù)解決問題的重點不難看出其在數(shù)據(jù)檢索上的優(yōu)勢,它的提出時間遠(yuǎn)遠(yuǎn)落后于關(guān)系數(shù)據(jù)庫的提出時間,實際上反映了根據(jù)具體問題優(yōu)化數(shù)據(jù)解決方案的原則。這與目前廣泛存在的凡是涉及大量數(shù)據(jù)處理必選SQL Server的處理方法形成鮮明對比。
通過選用成熟的目錄服務(wù)技術(shù)提高網(wǎng)頁查詢的效率,能夠簡潔有效地提高數(shù)據(jù)處理能力。這也充分顯示了GNU/Linux系統(tǒng)運行開放軟件的優(yōu)勢,畢竟不能方便地獲得運行于其他平臺的目錄服務(wù)器。
4、查詢程序設(shè)計
搜索引擎的前端界面是網(wǎng)頁,用戶通過在特定的網(wǎng)頁中輸入關(guān)鍵字提交給Web服務(wù)器進(jìn)行處理。運行在Apache Web服務(wù)器上的PHP腳本通過運行其相關(guān)ldap函數(shù)便可以執(zhí)行關(guān)鍵字的查詢工作。主要進(jìn)行的工作是根據(jù)關(guān)鍵字構(gòu)造查詢、向目錄服務(wù)器提交查詢、顯示查詢結(jié)果等。Linux + Apache + PHP作為廣泛使用Web服務(wù)器,與WinNT + IIS + ASP相比其性能毫不遜色,在目前的Linux發(fā)行版本中都集成了Apache + PHP 以及缺省的ldap、pgsql、imap等模塊。
5、計劃任務(wù)
搜索引擎的網(wǎng)頁數(shù)據(jù)收集、數(shù)據(jù)過濾、加入目錄數(shù)據(jù)庫等工作都應(yīng)該是自動完成的,在UNIX系統(tǒng)中有cron進(jìn)程來專門完成按照特定時間調(diào)度任務(wù),為了不影響系統(tǒng)的運行,一般可以把這些工作安排到深夜進(jìn)行。
二、具體步驟和注意事項
1、配置Wget軟件
在RedHat 6.2發(fā)行版中已經(jīng)集成了該軟件包,可以直接進(jìn)行安裝。將需要鏡像的站點地址編輯為一個文件中,通過 -I 參數(shù)讀入該文件;為鏡像的站點指定一個本地下載目錄;為了避免內(nèi)部網(wǎng)中鏈接的重復(fù)引用,一般只鏡像該站點內(nèi)的數(shù)據(jù);還可以根據(jù)網(wǎng)站的具體情況,指定其鏡像的深度。
2、配置Openldap服務(wù)
在RedHat 6.2發(fā)行版中已經(jīng)集成了Openldap-1.2.9,其配置文件存放在/etc/openldap的目錄中。主要的配置文件是slapd.conf,關(guān)鍵要打開對檢索速度至關(guān)重要的index選項,可以使用setup工具,將ldap在系統(tǒng)引導(dǎo)后作為缺省服務(wù)啟動。
Ldap服務(wù)可以通過文本文件方式存放數(shù)據(jù),即LDIF文件格式。使用此方式可以高效地更新目錄服務(wù)數(shù)據(jù),需要注意LDIF格式是通過空行對數(shù)據(jù)進(jìn)行分隔的,并且通過運行l(wèi)dif2lbm將LDIF格式數(shù)據(jù)導(dǎo)入目錄數(shù)據(jù)庫中時需要暫停目錄服務(wù)。
3、編制數(shù)據(jù)過濾和LDIF文件生成腳本
為了方便地過濾網(wǎng)頁數(shù)據(jù),可以調(diào)用Perl的HTML-Parser庫函數(shù),該程序包下載后需要進(jìn)行編譯,在eg目錄下生成了相關(guān)的htext,htitle程序,在Perl中可以通過調(diào)用外部程序的方式運行該程序,并對其過濾結(jié)果通過重定向的方法生成臨時文件。本搜索引擎設(shè)計的目錄數(shù)據(jù)屬性有dn 、link、title、modifydate、contents,其中的dn通過Link進(jìn)行唯一性標(biāo)識,將過濾后的網(wǎng)頁文本內(nèi)容通過/usr/sbin/ldif程序進(jìn)行自動編碼后放入LDIF文件中。
基本的LDIF文件格式如下:
dn: dc=27jd,dc=zzb
objectclass: top
objectclass: organization
dn: link= http://freemail.27jd.zzh/index.html, dc=27jd ,dc=zzb
link: http://freemail.27jd.zzh/index.html
title: Webmail主頁
modifydate: 2001年2月8日
contents::
CgpXZWJtYWls1vfSswoKCgoKIKHvoaG7ttOtyrnTw1dlYm1haWzPtc2zoaGh7yDO0t
KqyerH69PKz+QhISFPdXRsb29rxeTWw6O6U01UUDogZnJlZW1haWwuMjdqZC56emJQ
T1AzOiBmcm
VlbWFpbC4yN2pkLnp6YkROUyA6IDExLjk5LjY0Ljiy4srU08O7p6O6bWFpbGd1ZXN00
8O7p7/awe
6jum1haWxndWVzdNLR16Ky4dPDu6cg08O7p8P7OkAgZnJlZW1haWwuMjdqZC56emK/
2sHuOqChoa
AgIKHyzOG5qbf+zvEgofKzo7z7zsrM4iCh8s2o0bbCvKHyICCh8sq1z9bUrcDtIKHywfTR1
LK+of
IgofK8vMr1sr/W99Kzsb7Ptc2z08nK1NHpvLzK9bK/zfjC59bQ0MS9qMGius3OrLukCgoK
CqAKCg
o=
objectclass:webpage
基本的slapd.conf文件如下:
defaultaccess read
include /etc/openldap/slapd.at.conf
#include /etc/openldap/slapd.oc.conf
schemacheck off
sizelimit 20000
pidfile /var/run/slapd.pid
argsfile /var/run/slapd.args
#######################################################################
# ldbm database definitions
#######################################################################
database ldbm
dbcachesize 1000000
index contents,title
suffix "dc=27jd, dc=zzb"
directory /usr/tmp
rootdn "cn=root,dc=27jd, dc=zzb"
rootpw secret
通過對一個4萬個網(wǎng)頁(約300M左右)的本地html文件目錄進(jìn)行過濾后生成的LDIF文件約180M左右,如果只取文字?jǐn)?shù)據(jù)的前400個字符作為網(wǎng)頁內(nèi)容,則生成文件約35M左右。
4、配置PHP+LDAP服務(wù)
在Redhat6.2中已經(jīng)集成了PHP3和php-ldap模塊,選擇完全安裝時便已經(jīng)安裝到/usr/lib/apache目錄中,注意檢查/etc/httpd/php3.ini中的動態(tài)擴(kuò)展(Dynamic Extensions)中的extension=ldap.so是否被選擇。PHP3中提供了豐富的LDAP存取函數(shù),能夠方便完成對目錄數(shù)據(jù)的搜索功能。有關(guān)Apach + PHP編程方面的資料較多,在此不在贅述。注意在PHP3中的LDAP搜索函數(shù)ldap_search不能處理其返回結(jié)果超過目錄服務(wù)設(shè)定的最大檢索數(shù)據(jù),所以可以根據(jù)具體情況,在slapd的配置文件中設(shè)定較大的檢索數(shù)據(jù)限制(sizelimit),此問題在PHP4中已經(jīng)解決。
5、任務(wù)調(diào)度
在Redhat6.2中已經(jīng)集成了crond并且缺省安裝后便已經(jīng)啟動。其相關(guān)配置文件有/etc/crontab、/etc/cron.daily、/etc/cron.hourly、/etc/weekly、/etc/monthly,你只需要根據(jù)數(shù)據(jù)的更新頻度,將網(wǎng)頁收集、網(wǎng)頁過濾、生成LDIF文件、停止目錄服務(wù)、更新目錄數(shù)據(jù)、重新啟動目錄服務(wù),作為一個簡單的Shell程序放入到相應(yīng)的目錄中即可。
三、效果與思考
以上簡單的介紹了我們的搜索引擎的實現(xiàn)方法和注意事項,這僅僅是我們在對GNU/Linux了解得非常膚淺的情況下設(shè)計的以目錄服務(wù)為核心的滿足內(nèi)部網(wǎng)需要的搜索引擎系統(tǒng),并不能代表GNU/Linux和它集成的大量軟件的真正實力。
通過在一臺安裝RedHat Linux 6.2 的Sparc Ultra 250上實際測試,對擁有4萬個網(wǎng)頁的目錄數(shù)據(jù)進(jìn)行搜索時,基于上述方法設(shè)計的搜索引擎響應(yīng)速度一般在3秒左右,目錄數(shù)據(jù)完全更新大約需要4小時左右,能夠滿足內(nèi)部網(wǎng)的需要。實際上,限制搜索響應(yīng)速度的關(guān)鍵是PHP3的ldap_search函數(shù)沒有提供數(shù)據(jù)限制的功能,導(dǎo)致在查詢結(jié)果集過大時系統(tǒng)響應(yīng)速度變慢,因為每次用戶能夠瀏覽的查詢結(jié)果實際是非常少的,而服務(wù)器端每次的查詢總是返回全部結(jié)果,在PHP4中的ldap_search通過指定sizelimit參數(shù),能夠有效解決該問題。
目錄服務(wù)的應(yīng)用范圍非常廣泛,實際上作為大型的信息站點為了提高客戶訪問效率,都或多或少采用了目錄服務(wù)的技術(shù)。目錄服務(wù)根據(jù)具體的應(yīng)用需求的優(yōu)化設(shè)計方法,對我們決定應(yīng)用系統(tǒng)的開發(fā)無疑是一個啟發(fā),應(yīng)該說在基于索引信息的領(lǐng)域LDAP服務(wù)遠(yuǎn)遠(yuǎn)優(yōu)于傳統(tǒng)的關(guān)系數(shù)據(jù)庫系統(tǒng)。
基于GNU/Linux進(jìn)行網(wǎng)絡(luò)服務(wù)器程序設(shè)計,能夠充分體會到開放源代碼的魅力和實力,它既能夠簡化系統(tǒng)的設(shè)計,又大大地提高了工作效率,同時也有效降低了系統(tǒng)的成本。程序設(shè)計由一切從零開始的復(fù)雜繁瑣的重復(fù)勞動,簡化為問題抽象、功能分解、查找資源、組合系統(tǒng)四個部分,更加強(qiáng)調(diào)對系統(tǒng)的認(rèn)識、開闊的視野和學(xué)習(xí)的能力,同時開放源代碼也為系統(tǒng)進(jìn)一步優(yōu)化提供了堅實的基礎(chǔ)。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
openldap的安裝與配置
用PHP通過LDAP操作活動目錄(AD)的筆記
Linux下安裝openldap
Windows下LDAP服務(wù)器配置
安裝PHP的LDAP擴(kuò)展
基于LDAP的Web身份認(rèn)證機(jī)制的研究與設(shè)計收藏
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服