專(zhuān)利名稱(chēng)::開(kāi)源軟件獲取與搜索系統(tǒng)的實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種開(kāi)源軟件獲取與搜索系統(tǒng)的實(shí)現(xiàn)方法,特別是在跨多個(gè)開(kāi)源社區(qū)的環(huán)境下,一種基于定向網(wǎng)絡(luò)爬蟲(chóng)、信息抽取的開(kāi)源軟件搜索系統(tǒng)的構(gòu)造方法。
背景技術(shù):
:近年來(lái),國(guó)內(nèi)外開(kāi)源軟件運(yùn)動(dòng)取得了蓬勃發(fā)展,已經(jīng)形成眾多擁有大量開(kāi)發(fā)人員、開(kāi)源項(xiàng)目和開(kāi)源社區(qū)的軟件開(kāi)發(fā)和應(yīng)用的開(kāi)源軟件生態(tài)系統(tǒng)。目前開(kāi)源軟件業(yè)界有如下發(fā)展趨勢(shì)I.開(kāi)源項(xiàng)目和開(kāi)發(fā)人員數(shù)量龐大并逐年穩(wěn)定增長(zhǎng);2.少數(shù)優(yōu)秀的開(kāi)源項(xiàng)目發(fā)展迅速并且得到廣泛應(yīng)用;3.多數(shù)開(kāi)源項(xiàng)目處于較低的發(fā)展水平且處于緩慢發(fā)展?fàn)顟B(tài);這些特征使得從海量開(kāi)源軟件項(xiàng)目中發(fā)現(xiàn)和選擇高質(zhì)量且滿(mǎn)足特定需求的開(kāi)源軟件成為急需解決問(wèn)題。傳統(tǒng)搜索引擎由于其缺乏針對(duì)性,搜索結(jié)果中有效信息含量不高,因此難以應(yīng)對(duì)這樣的需求。開(kāi)源軟件社區(qū)作為開(kāi)源軟件的托管平臺(tái),其頁(yè)面有著豐富的開(kāi)源項(xiàng)目描述信息,對(duì)于開(kāi)源軟件的共享、評(píng)價(jià)和選擇具有重要價(jià)值。開(kāi)源社區(qū)大多集成了針對(duì)社區(qū)內(nèi)開(kāi)源軟件的搜索引擎和條件選擇服務(wù),然而要在全球范圍內(nèi)選擇和查找開(kāi)源軟件,綜合跨社區(qū)的軟件信息,構(gòu)建跨社區(qū)的開(kāi)源軟件搜索引擎勢(shì)在必行。近年來(lái),國(guó)內(nèi)外針對(duì)跨社區(qū)的開(kāi)源軟件頁(yè)面數(shù)據(jù)收集開(kāi)展了大量的研究和實(shí)踐。美國(guó)Syracuse大學(xué)的FLOSSmole項(xiàng)目在該領(lǐng)域做出了突出成績(jī)。通過(guò)使用275個(gè)網(wǎng)絡(luò)爬蟲(chóng),該項(xiàng)目從20多個(gè)社區(qū)中爬取了近500,000個(gè)開(kāi)源項(xiàng)目的頁(yè)面數(shù)據(jù)。但由于該工作只進(jìn)行了數(shù)據(jù)的搜集,對(duì)外僅提供sql查詢(xún)接口和sql數(shù)據(jù)包的下載,而并沒(méi)有提供數(shù)據(jù)的綜合、展現(xiàn)、搜索等功能,因此并不能幫助人們搜索與獲取軟件。國(guó)內(nèi)面向開(kāi)源軟件的搜索引擎研究還處于起步階段,其中比較有影響力的包括開(kāi)源中國(guó)社區(qū)、CSDN開(kāi)源社區(qū)、中國(guó)Linux社區(qū)等。開(kāi)源中國(guó)社區(qū)中的開(kāi)源軟件信息主要來(lái)自用戶(hù)人工編輯,數(shù)目和質(zhì)量上都有明顯的局限性;CSDN社區(qū)中的開(kāi)源資源主要是用戶(hù)自行共享上傳的工具包或代碼庫(kù);來(lái)源混雜,格式不統(tǒng)一,描述不完備;而Linux社區(qū)的開(kāi)源軟件主要局限在Linux系統(tǒng)相關(guān)的包和工具??偟膩?lái)說(shuō),當(dāng)前這些社區(qū)缺乏一個(gè)涵蓋面廣,數(shù)據(jù)全面,格式統(tǒng)一的開(kāi)源軟件信息庫(kù),以及基于該信息庫(kù)的一種為用戶(hù)查詢(xún)和選擇開(kāi)源軟件提供推薦和幫助的搜索引擎技術(shù)。
發(fā)明內(nèi)容本發(fā)明要解決的問(wèn)題是針對(duì)現(xiàn)有技術(shù)在跨社區(qū)信息獲取和信息綜合展現(xiàn)方面的不足,提出一種開(kāi)源軟件搜索系統(tǒng)的實(shí)現(xiàn)方法,使得能夠廣泛搜集多個(gè)社區(qū)的開(kāi)源軟件信息,為預(yù)期用戶(hù)提供軟件查找和推薦服務(wù)。本發(fā)明的技術(shù)方案包括以下步驟步驟I、搭建數(shù)據(jù)服務(wù)。在企業(yè)級(jí)服務(wù)器上配置關(guān)系數(shù)據(jù)庫(kù)管理軟件,搭建關(guān)系與對(duì)象映射框架,使得上層應(yīng)用程序?qū)﹃P(guān)系數(shù)據(jù)庫(kù)進(jìn)行調(diào)用時(shí)能使業(yè)務(wù)層代碼能夠以對(duì)象的方式訪(fǎng)問(wèn)和更新數(shù)據(jù)庫(kù)里的信息。步驟2、網(wǎng)頁(yè)獲取。接收用戶(hù)的輸入定義,確定一定數(shù)目的已知URL地址的開(kāi)源社區(qū)集合,通過(guò)爬蟲(chóng)抓取開(kāi)源社區(qū)中的開(kāi)源軟件主頁(yè),將開(kāi)源項(xiàng)目的爬取分為開(kāi)源項(xiàng)目列表頁(yè)爬取和開(kāi)源項(xiàng)目主頁(yè)爬取兩個(gè)階段。步驟3、開(kāi)源屬性抽取。從爬取到的頁(yè)面中抽取開(kāi)源軟件領(lǐng)域的信息即開(kāi)源屬性,如項(xiàng)目編程語(yǔ)言、證書(shū)、運(yùn)行環(huán)境、開(kāi)發(fā)狀態(tài)、注冊(cè)時(shí)間、最新發(fā)布時(shí)間、下載次數(shù)、主頁(yè)鏈接坐寸o步驟4、對(duì)跨社區(qū)項(xiàng)目信息進(jìn)行整合,當(dāng)來(lái)自不同社區(qū)的項(xiàng)目具有不同的屬性時(shí),取屬性并集;同時(shí)保存不同項(xiàng)目之間的依賴(lài)關(guān)系;步驟5、對(duì)獲取的開(kāi)源屬性建立倒排索引,其中的每一項(xiàng)都包括一個(gè)屬性值和具有該屬性值的各記錄的地址,由屬性值來(lái)確定記錄的位置,而非由記錄來(lái)確定屬性值。步驟6、響應(yīng)于用戶(hù)搜索輸入或預(yù)定義的排名機(jī)制,對(duì)需要展現(xiàn)的開(kāi)源項(xiàng)目進(jìn)行排序并顯示。進(jìn)一步地,步驟2可以下列方式實(shí)現(xiàn)步驟21、根據(jù)社區(qū)的項(xiàng)目主頁(yè)URL模板進(jìn)行匹配,抽取出項(xiàng)目主頁(yè)URL存放到數(shù)據(jù)庫(kù),對(duì)不斷變化的社區(qū)開(kāi)源項(xiàng)目主頁(yè)構(gòu)成情況進(jìn)行快照。步驟22、是爬取開(kāi)源項(xiàng)目主頁(yè)。網(wǎng)頁(yè)爬蟲(chóng)不斷從數(shù)據(jù)庫(kù)中取出項(xiàng)目主頁(yè)URL進(jìn)行定向爬取,將爬取到的完整HTML頁(yè)面文本保存到數(shù)據(jù)庫(kù)。更為具體地,步驟3通過(guò)下列步驟進(jìn)行。步驟31、模板探測(cè)。發(fā)現(xiàn)每個(gè)開(kāi)源社區(qū)用于顯示開(kāi)源屬性的網(wǎng)頁(yè)模板,可以是HTML樹(shù)中的標(biāo)簽路徑,也可以是HTML文本中的正則表達(dá)式,作為抽取開(kāi)源屬性的規(guī)則。具體來(lái)說(shuō)有兩種獲取方式。步驟311、基于人工觀察的方法。通過(guò)觀察來(lái)自開(kāi)源社區(qū)的少量網(wǎng)頁(yè)樣本,發(fā)現(xiàn)各個(gè)開(kāi)源屬性所在的頁(yè)面位置或其出現(xiàn)的正則表達(dá)式模式。步驟312、基于種子集合的方法。獲取開(kāi)源屬性的可列屬性值,使用字符串相似度匹配算法,自動(dòng)的在網(wǎng)頁(yè)集合中發(fā)現(xiàn)開(kāi)源屬性值所在標(biāo)簽路徑,采用最大支持度方法(即在某位置具有最高匹配次數(shù)則認(rèn)為在此具有最大支持度)篩選出唯一的網(wǎng)頁(yè)模板。其中,所述字符串的相似度匹配可以通過(guò)兩字符串對(duì)應(yīng)q-gram集合的雅加達(dá)(Jaccard)系數(shù)作為兩字符串匹配度數(shù)值,當(dāng)該數(shù)值若高于預(yù)定義的某閾值則認(rèn)為匹配。步驟32、標(biāo)簽定位。通過(guò)已獲取的模板定位到開(kāi)源屬性值的HTML標(biāo)簽。如果確定的模版是通過(guò)人工觀察并確定的正則表達(dá)式,則進(jìn)行步驟321基于正則表達(dá)式的定位方法。使用正則表達(dá)式定位規(guī)則在目標(biāo)網(wǎng)頁(yè)中發(fā)現(xiàn)屬性值標(biāo)簽節(jié)點(diǎn);如果確定的模版是通過(guò)種子集合方法確定出的標(biāo)簽路徑,則進(jìn)行步驟322基于標(biāo)簽路徑的定位方法,根據(jù)html頁(yè)面的文檔對(duì)象模型(DOM)樹(shù)形結(jié)構(gòu),將每個(gè)標(biāo)簽位置表示為從頁(yè)面根節(jié)點(diǎn)html到屬性值所在節(jié)點(diǎn)的標(biāo)簽路徑,借助支持該路徑的網(wǎng)頁(yè)解析工具(如D0M4J)進(jìn)行標(biāo)簽定位與獲取,從而獲取屬性值對(duì)應(yīng)的文本標(biāo)簽。進(jìn)一步地,所述步驟6中,如果接收到用戶(hù)的搜索輸入,則通過(guò)計(jì)算用戶(hù)輸入的關(guān)鍵字與倒排索引數(shù)據(jù)集合之間的字符串匹配情況,計(jì)算關(guān)鍵字與數(shù)據(jù)集合中軟件項(xiàng)目的結(jié)果的相關(guān)度進(jìn)行排序;如果沒(méi)有接收到用戶(hù)搜索輸入,則依據(jù)項(xiàng)目的開(kāi)源參與程度和信息完備程度定義的項(xiàng)目排名機(jī)制,項(xiàng)目進(jìn)行排序與展示。進(jìn)一步地,所述項(xiàng)目的開(kāi)源參與程度由一個(gè)項(xiàng)目所用于托管的社區(qū)數(shù),其所關(guān)聯(lián)的其他開(kāi)源項(xiàng)目數(shù)來(lái)量化;所述信息完備程度由項(xiàng)目的開(kāi)源屬性個(gè)數(shù)來(lái)量化。最終開(kāi)發(fā)相應(yīng)的用戶(hù)交互界面,負(fù)責(zé)接收來(lái)自用戶(hù)輸入,同時(shí)負(fù)責(zé)接收來(lái)自搜索引擎的排序結(jié)果,對(duì)開(kāi)源社區(qū)中的軟件項(xiàng)目進(jìn)行組織和展示。圖I為本發(fā)明跨社區(qū)開(kāi)源軟件搜索系統(tǒng)實(shí)現(xiàn)方法的流程圖;圖2為根據(jù)本發(fā)明的實(shí)施例的獲取不同社區(qū)開(kāi)源軟件項(xiàng)目的流程圖。圖3為根據(jù)本發(fā)明的實(shí)施例的對(duì)獲取后的開(kāi)源軟件項(xiàng)目進(jìn)行管理和組織的流程圖。具體實(shí)施例方式如圖I所示,為開(kāi)源軟件獲取與搜索系統(tǒng)及方法實(shí)現(xiàn)的流程圖,具體實(shí)施以下步驟步驟I、搭建數(shù)據(jù)服務(wù)。開(kāi)源軟件信息庫(kù)具有數(shù)據(jù)量大(>100GB),更新頻繁,并發(fā)查詢(xún)處理能力強(qiáng),例如在互聯(lián)網(wǎng)上提供面向海量用戶(hù)的訪(fǎng)問(wèn)服務(wù)等方面的要求。因此需要采用企業(yè)級(jí)的高效的數(shù)據(jù)庫(kù)管理軟件來(lái)搭建數(shù)據(jù)服務(wù),在本發(fā)明中將數(shù)據(jù)服務(wù)部署在企業(yè)級(jí)刀片服務(wù)器上,具有8核CPU,內(nèi)存32GB,硬盤(pán)2TB??梢允褂藐P(guān)系數(shù)據(jù)庫(kù)或面向?qū)ο髷?shù)據(jù)庫(kù),當(dāng)使用關(guān)系數(shù)據(jù)庫(kù)時(shí),還需要搭建關(guān)系與對(duì)象映射框架,以方便上層應(yīng)用程序?qū)﹃P(guān)系數(shù)據(jù)庫(kù)進(jìn)行調(diào)用,使業(yè)務(wù)層代碼能夠以對(duì)象的方式訪(fǎng)問(wèn)和更新數(shù)據(jù)庫(kù)里的信息。步驟2、網(wǎng)頁(yè)獲取。通過(guò)爬蟲(chóng)抓取開(kāi)源社區(qū)中的開(kāi)源軟件主頁(yè),由于目標(biāo)頁(yè)面URL集合是已知的,因此可以對(duì)傳統(tǒng)通用爬蟲(chóng)的爬取方式進(jìn)行修改,去除其中如URL合法性判斷,新URL發(fā)現(xiàn)等不適用的常規(guī)部件,而使用由人工事先對(duì)每個(gè)開(kāi)源社區(qū)預(yù)定義,進(jìn)而確定需要爬取的URL的生成方法?;陂_(kāi)源社區(qū)中項(xiàng)目不斷增加的特征,將開(kāi)源項(xiàng)目的爬取嚴(yán)格劃分為開(kāi)源項(xiàng)目列表頁(yè)爬取和開(kāi)源項(xiàng)目主頁(yè)爬取兩個(gè)階段。步驟21、第一階段的目標(biāo)是分析社區(qū)中的所有項(xiàng)目列表頁(yè),對(duì)于同一社區(qū),其項(xiàng)目列表頁(yè)在命名上是具有一定規(guī)律和相對(duì)固定的,例如對(duì)于sourceforge社區(qū)來(lái)說(shuō),其項(xiàng)目列表頁(yè)的格式為www.sourceforge.net/search/I.html,可能發(fā)生變化的可能僅僅是html文本的數(shù)字編號(hào)。根據(jù)社區(qū)的項(xiàng)目主頁(yè)URL模板進(jìn)行匹配,抽取出項(xiàng)目主頁(yè)URL存放到數(shù)據(jù)庫(kù),起到對(duì)不斷變化的社區(qū)開(kāi)源項(xiàng)目主頁(yè)構(gòu)成情況進(jìn)行快照的作用。步驟22、第二階段的目標(biāo)是爬取開(kāi)源項(xiàng)目主頁(yè)。網(wǎng)頁(yè)爬蟲(chóng)不斷從數(shù)據(jù)庫(kù)中取出項(xiàng)目主頁(yè)URL進(jìn)行定向爬取,將爬取到的完整HTML頁(yè)面文本保存到數(shù)據(jù)庫(kù)。爬取時(shí)采用多線(xiàn)程爬取技術(shù),以提高爬取效率。步驟3、開(kāi)源屬性抽取。從爬取到的頁(yè)面中抽取開(kāi)源軟件領(lǐng)域的信息即開(kāi)源屬性,如項(xiàng)目編程語(yǔ)言、證書(shū)、界面、運(yùn)行環(huán)境、本地化、數(shù)據(jù)庫(kù)、開(kāi)發(fā)狀態(tài)、注冊(cè)時(shí)間、最新發(fā)布時(shí)間、下載次數(shù)、主頁(yè)鏈接等。更為具體地,通過(guò)下列步驟進(jìn)行。步驟31、模板探測(cè)。發(fā)現(xiàn)每個(gè)開(kāi)源社區(qū)用于顯示開(kāi)源屬性的網(wǎng)頁(yè)模板,可以是HTML樹(shù)中的標(biāo)簽路徑,也可以是HTML文本中的正則表達(dá)式,作為抽取開(kāi)源屬性的規(guī)則。具體來(lái)說(shuō)有兩種獲取方式。步驟311、基于人工觀察的方法。通過(guò)觀察來(lái)自開(kāi)源社區(qū)的少量網(wǎng)頁(yè)樣本,發(fā)現(xiàn)各個(gè)開(kāi)源屬性所在的頁(yè)面位置或其出現(xiàn)的正則表達(dá)式模式。該方法較為簡(jiǎn)易,但可靠性不高,適用于網(wǎng)頁(yè)結(jié)構(gòu)簡(jiǎn)單,模板明晰的社區(qū)模板探測(cè)。步驟312、基于種子集合的方法。獲取開(kāi)源屬性的可列屬性值,使用字符串相似度匹配算法,自動(dòng)的在網(wǎng)頁(yè)集合中發(fā)現(xiàn)開(kāi)源屬性值所在標(biāo)簽路徑,采用最大支持度方法(即在某位置具有最高匹配次數(shù)則認(rèn)為在此具有最大支持度)篩選出唯一的網(wǎng)頁(yè)模板。字符串的相似度匹配可以通過(guò)兩字符串對(duì)應(yīng)q-gram集合的雅加達(dá)(Jaccard)系數(shù)作為兩字符串匹配度數(shù)值,當(dāng)該數(shù)值若高于預(yù)定義的某閾值則認(rèn)為匹配。例如,設(shè)種子屬性值為“GPLLicense",該方法則負(fù)責(zé)發(fā)現(xiàn)“GPLLicense”在目標(biāo)社區(qū)中所有出現(xiàn)及各個(gè)出現(xiàn)的標(biāo)簽路徑,選擇出現(xiàn)次數(shù)最多的路徑,如“/html/body/table/tr/td/text()”,作為該屬性的抽取規(guī)則和抽取位置。步驟32、標(biāo)簽定位。通過(guò)已獲取的模板定位到開(kāi)源屬性值的HTML標(biāo)簽。如果確定的模版是通過(guò)人工觀察并確定的正則表達(dá)式,則進(jìn)行步驟321基于正則表達(dá)式的定位方法。使用正則表達(dá)式定位規(guī)則在目標(biāo)網(wǎng)頁(yè)中發(fā)現(xiàn)屬性值標(biāo)簽節(jié)點(diǎn)。如有html片段“<li>License<ahref=“/categories/license/gpl,,>GPLLicense〈/a>,,,其對(duì)應(yīng)的“License”屬性值正則表達(dá)式定位規(guī)則可能為“<Li>License<ahref=\“/categories/license/[a-zA-Z|0-9]+\”>[a_zA-Z10-9]+〈/a>”,該表達(dá)式將定位到所有的“License”屬性所在標(biāo)簽。如果確定的模版是通過(guò)種子集合方法確定出的標(biāo)簽路徑,則進(jìn)行步驟322基于標(biāo)簽路徑的定位方法。根據(jù)html頁(yè)面的文檔對(duì)象模型(DOM)樹(shù)形結(jié)構(gòu),將每個(gè)標(biāo)簽位置表示為從頁(yè)面根節(jié)點(diǎn)(<html>)到屬性值所在節(jié)點(diǎn)的標(biāo)簽路徑,借助支持該路徑的網(wǎng)頁(yè)解析工具(如D0M4J)進(jìn)行標(biāo)簽定位與獲取,從而獲取屬性值對(duì)應(yīng)的文本標(biāo)簽。步驟4、信息綜合與挖掘。步驟401、跨社區(qū)項(xiàng)目信息整合。即對(duì)抽取得到的信息進(jìn)行整合處理。實(shí)施例中,設(shè)開(kāi)源項(xiàng)目xwiki在社區(qū)sourceforge.net中抽取的主題為“Database,DynamicContent,SiteManagement”,在ow2.org中其主題為“DynamicContent”,通過(guò)取并集獲取項(xiàng)目xwiki跨此兩個(gè)社區(qū)的主題集合為(“Database,DynamicContent,SiteManagement”)。步驟402、挖掘項(xiàng)目協(xié)同關(guān)系??缟鐓^(qū)地發(fā)現(xiàn)項(xiàng)目描述提到其他項(xiàng)目的情形,發(fā)現(xiàn)各個(gè)開(kāi)源項(xiàng)目之間的協(xié)同關(guān)系。在實(shí)施例中,設(shè)項(xiàng)目xwikimantis在其描述中有陳述“XwikiMantispluginintegratesmantisintoxwiki,,,將保存xwikimantis至丨Jxwiki的依賴(lài)關(guān)系,在用戶(hù)搜索結(jié)果中進(jìn)行呈現(xiàn)。步驟5、建立倒排索引。對(duì)步驟3獲取的開(kāi)源屬性建立倒排索弓丨,這種索引表中的每一項(xiàng)都包括一個(gè)屬性值和具有該屬性值的各記錄的地址。由屬性值來(lái)確定記錄、的位置,而不是由記錄來(lái)確定屬性值。對(duì)項(xiàng)目xwiki來(lái)說(shuō),其在sourceforge.net,ow2.org,freshmeat.net獲取的屬性有(project-real-nameinsourceforge,“xwiki,,),(user-interfaceinsourceforge,“web-based,,),(licenseinow2,“gpl,,),(programming-language-in-freshmeat,“java,,),(description-in-sourceforge,“XWikiisthenextgenerationenterprisewiki,”)。在此對(duì)這些屬性建立倒排索引。當(dāng)搜索系統(tǒng)用戶(hù)輸入查詢(xún)關(guān)鍵詞“enterprisewiki”時(shí),系統(tǒng)將根據(jù)索引中含有該關(guān)鍵詞的項(xiàng)目信息按一定的排序算法有序返回。本實(shí)施例中xwiki的描述信息索引中含有“enterprisewiki”關(guān)鍵詞,因此xwiki將會(huì)被作為結(jié)果之一返回給用戶(hù)。步驟6、實(shí)現(xiàn)排序。步驟601、基于關(guān)鍵字匹配的搜索結(jié)果排序方法。該方法即通過(guò)計(jì)算用戶(hù)輸入的關(guān)鍵字與倒排索引數(shù)據(jù)集合之間的字符串匹配情況,計(jì)算關(guān)鍵字與數(shù)據(jù)集合中軟件項(xiàng)目的結(jié)果的相關(guān)度進(jìn)行排序。步驟602、無(wú)關(guān)鍵字的項(xiàng)目排名算法。可以綜合考慮一個(gè)項(xiàng)目的開(kāi)源參與程度和信息完備程度定義項(xiàng)目排名機(jī)制,根據(jù)項(xiàng)目不同的相關(guān)信息分配相應(yīng)的權(quán)重,加權(quán)計(jì)算得分,用于在用戶(hù)不輸入關(guān)鍵字的情況下,對(duì)項(xiàng)目進(jìn)行排序與展示。其中,項(xiàng)目的開(kāi)源參與程度由一個(gè)項(xiàng)目所用于托管的社區(qū)數(shù),其所關(guān)聯(lián)的其他開(kāi)源項(xiàng)目數(shù)來(lái)量化;而信息完備程度由項(xiàng)目的開(kāi)源屬性個(gè)數(shù)來(lái)量化。根據(jù)本發(fā)明的實(shí)施例,可以實(shí)現(xiàn)專(zhuān)門(mén)針對(duì)開(kāi)源軟件的搜索和獲取,從而使得開(kāi)發(fā)人員對(duì)于開(kāi)源軟件的查找和利用更為便利。最后所應(yīng)說(shuō)明的是,以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案而非限制,盡管參照較佳實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,可以對(duì)本發(fā)明的技術(shù)方案進(jìn)行修改或者等同替換,而不脫離本發(fā)明技術(shù)方案的精神和范圍。權(quán)利要求1.一種開(kāi)源軟件獲取與搜索系統(tǒng)的實(shí)現(xiàn)方法,包括下列步驟步驟I、搭建數(shù)據(jù)服務(wù),在企業(yè)級(jí)服務(wù)器上配置關(guān)系數(shù)據(jù)庫(kù)管理軟件,搭建關(guān)系與對(duì)象映射框架,使得上層應(yīng)用程序?qū)﹃P(guān)系數(shù)據(jù)庫(kù)進(jìn)行調(diào)用時(shí)能使業(yè)務(wù)層代碼能夠以對(duì)象的方式訪(fǎng)問(wèn)和更新數(shù)據(jù)庫(kù)里的信息;步驟2、網(wǎng)頁(yè)獲取,接收用戶(hù)的輸入定義,確定一定數(shù)目的已知URL地址的開(kāi)源社區(qū)集合,通過(guò)爬蟲(chóng)抓取開(kāi)源社區(qū)中的開(kāi)源軟件主頁(yè),將開(kāi)源項(xiàng)目的爬取分為開(kāi)源項(xiàng)目列表頁(yè)爬取和開(kāi)源項(xiàng)目主頁(yè)爬取兩個(gè)階段。步驟3、開(kāi)源屬性抽取,從爬取到的頁(yè)面中抽取開(kāi)源軟件領(lǐng)域的信息即開(kāi)源屬性;步驟4、對(duì)跨社區(qū)項(xiàng)目信息進(jìn)行整合,當(dāng)來(lái)自不同社區(qū)的項(xiàng)目具有不同的屬性時(shí),取屬性并集;同時(shí)保存不同項(xiàng)目之間的依賴(lài)關(guān)系;步驟5、對(duì)獲取的開(kāi)源屬性建立倒排索引,其中的每一項(xiàng)都包括一個(gè)屬性值和具有該屬性值的各記錄的地址,由屬性值來(lái)確定記錄的位置,而非由記錄來(lái)確定屬性值。步驟6、響應(yīng)于用戶(hù)搜索輸入或預(yù)定義的排名機(jī)制,對(duì)需要展現(xiàn)的開(kāi)源項(xiàng)目進(jìn)行排序并顯不。2.如權(quán)利要求I所述的方法,其中所述開(kāi)源屬性包括項(xiàng)目編程語(yǔ)言、證書(shū)、運(yùn)行環(huán)境、開(kāi)發(fā)狀態(tài)、注冊(cè)時(shí)間、最新發(fā)布時(shí)間、下載次數(shù)、主頁(yè)鏈接等。3.如權(quán)利要求I所述的方法,其中步驟2進(jìn)一步包括爬取開(kāi)源項(xiàng)目列表頁(yè),根據(jù)社區(qū)的項(xiàng)目主頁(yè)URL模板進(jìn)行匹配,抽取項(xiàng)目主頁(yè)URL存放到數(shù)據(jù)庫(kù),對(duì)不斷變化的社區(qū)開(kāi)源項(xiàng)目主頁(yè)構(gòu)成情況進(jìn)行快照;爬取開(kāi)源項(xiàng)目主頁(yè),從數(shù)據(jù)庫(kù)中取出項(xiàng)目主頁(yè)URL進(jìn)行定向爬取,將爬取到的完整HTML頁(yè)面文本保存到數(shù)據(jù)庫(kù)。4.如權(quán)利要求I所述的方法,其中所述步驟3進(jìn)一步包括步驟31、模板探測(cè),發(fā)現(xiàn)每個(gè)開(kāi)源社區(qū)用于顯示開(kāi)源屬性的網(wǎng)頁(yè)模板,可以是HTML樹(shù)中的標(biāo)簽路徑,也可以是HTML文本中的正則表達(dá)式,作為抽取開(kāi)源屬性的規(guī)則。步驟32、通過(guò)已獲取的模板定位到開(kāi)源屬性值的HTML標(biāo)簽以進(jìn)行標(biāo)簽定位。5.如權(quán)利要求4所述的方法,其中所述正則表達(dá)式通過(guò)人工觀察確定。6.如權(quán)利要求4所述的方法,其中所述標(biāo)簽路徑通過(guò)種子集合確定,。獲取開(kāi)源屬性的可列屬性值,使用字符串相似度匹配算法,自動(dòng)的在網(wǎng)頁(yè)集合中發(fā)現(xiàn)開(kāi)源屬性值所在標(biāo)簽路徑,當(dāng)在某位置具有最高匹配次數(shù)時(shí)確定該位置從而篩選出唯一的網(wǎng)頁(yè)模板。7.如權(quán)利要求6所述的方法,其中所述字符串的相似度匹配通過(guò)兩字符串對(duì)應(yīng)q-gram集合的雅加達(dá)(Jaccard)系數(shù)作為兩字符串匹配度數(shù)值,當(dāng)該數(shù)值若高于預(yù)定義的某閾值則認(rèn)為匹配。8.如權(quán)利要求4所述的方法,其中所述標(biāo)簽定位通過(guò)正則表達(dá)式定位規(guī)則在目標(biāo)網(wǎng)頁(yè)中發(fā)現(xiàn)屬性值標(biāo)簽節(jié)點(diǎn);或者,所述標(biāo)簽定位根據(jù)html頁(yè)面的文檔對(duì)象模型樹(shù)形結(jié)構(gòu),將每個(gè)標(biāo)簽位置表示為從頁(yè)面根節(jié)點(diǎn)到屬性值所在節(jié)點(diǎn)的標(biāo)簽路徑,借助支持該路徑的網(wǎng)頁(yè)解析工具進(jìn)行標(biāo)簽定位與獲取。9.如權(quán)利要求I所述的方法,其中所述步驟6進(jìn)一步包括,如果接收到用戶(hù)的搜索輸入,則通過(guò)計(jì)算用戶(hù)輸入的關(guān)鍵字與倒排索引數(shù)據(jù)集合之間的字符串匹配確定的相關(guān)度進(jìn)行排序;如果沒(méi)有接收到用戶(hù)搜索輸入,則依據(jù)項(xiàng)目的開(kāi)源參與程度和信息完備程度定義的項(xiàng)目排名機(jī)制,進(jìn)行排序與展示。10.如權(quán)利要求9所述的方法,其中所述項(xiàng)目的開(kāi)源參與程度由一個(gè)項(xiàng)目所用于托管的社區(qū)數(shù),其所關(guān)聯(lián)的其他開(kāi)源項(xiàng)目數(shù)來(lái)量化;所述信息完備程度由項(xiàng)目的開(kāi)源屬性個(gè)數(shù)來(lái)量化。全文摘要一種開(kāi)源軟件獲取與搜索系統(tǒng)的實(shí)現(xiàn)方法,包括在企業(yè)級(jí)服務(wù)器上配置關(guān)系數(shù)據(jù)庫(kù)管理軟件,使得上層應(yīng)用程序?qū)﹃P(guān)系數(shù)據(jù)庫(kù)進(jìn)行調(diào)用時(shí)能使業(yè)務(wù)層代碼能夠以對(duì)象的方式訪(fǎng)問(wèn)和更新數(shù)據(jù)庫(kù)里的信息;接收用戶(hù)的輸入定義,確定一定數(shù)目的已知URL地址的開(kāi)源社區(qū)集合,通過(guò)爬蟲(chóng)抓取開(kāi)源社區(qū)中的開(kāi)源軟件主頁(yè);從爬取到的頁(yè)面中抽取開(kāi)源軟件領(lǐng)域的信息即開(kāi)源屬性;對(duì)跨社區(qū)項(xiàng)目信息進(jìn)行整合,當(dāng)來(lái)自不同社區(qū)的項(xiàng)目具有不同的屬性時(shí),取屬性并集,同時(shí)保存不同項(xiàng)目之間的依賴(lài)關(guān)系;對(duì)獲取的開(kāi)源屬性建立倒排索引;響應(yīng)于用戶(hù)搜索輸入或預(yù)定義的排名機(jī)制,對(duì)需要展現(xiàn)的開(kāi)源項(xiàng)目進(jìn)行排序并顯示,從而實(shí)現(xiàn)對(duì)開(kāi)源軟件項(xiàng)目的獲取與搜索。文檔編號(hào)G06F17/30GK102760151SQ201210097169公開(kāi)日2012年10月31日申請(qǐng)日期2012年4月5日優(yōu)先權(quán)日2012年4月5日發(fā)明者余躍,劉惠,史殿習(xí),尹剛,朱沿旭,李翔,滕猛,王懷民,王濤,袁霖申請(qǐng)人:中國(guó)人民解放軍國(guó)防科學(xué)技術(shù)大學(xué)