herodby
          技術(shù) 筆記
          posts - 14,  comments - 14,  trackbacks - 0

                   最近一直想寫(xiě)個(gè)和搜索相關(guān)的東東,所以簡(jiǎn)單了解搜索引擎方面的知識(shí),個(gè)人總結(jié)一個(gè)垂直搜索引擎 包含以下幾個(gè)部分:
                   1   web 爬蟲(chóng),抓取目標(biāo)頁(yè)面的內(nèi)容。
                   2  數(shù)據(jù)預(yù)處理,把抓取下來(lái)的數(shù)據(jù)進(jìn)行去噪,例如使用htmlparser等工具對(duì)去掉無(wú)用的標(biāo)簽數(shù)據(jù)等等,把 
                       數(shù)據(jù)結(jié)構(gòu)化DB或者其他存儲(chǔ)系統(tǒng)已被后面使用。
                   3. 建立索引。
                   4. 分詞,開(kāi)發(fā)檢索因子, 對(duì)索引數(shù)據(jù)進(jìn)行檢索。
                   5. 把檢索到的數(shù)據(jù),在web段展現(xiàn)。
            下面就結(jié)合heritrix1.14.3  和lucence2.2.0,介紹下,整個(gè)搜索引擎的開(kāi)發(fā)過(guò)程。

          基于lucence+heritrix的開(kāi)源搜索引擎構(gòu)建
                   

              基于lucence+heritrix的開(kāi)源搜索引擎構(gòu)建

          一 Heritrix

            簡(jiǎn)介

             Heritrix是 一個(gè)用java編寫(xiě)的,開(kāi)源的,可擴(kuò)展的 網(wǎng)絡(luò)爬蟲(chóng)工具,嚴(yán)格遵守robot規(guī)范。 Heritrix,目前還沒(méi)有在windows測(cè)試過(guò),linux環(huán)境測(cè)試通過(guò)。筆者為了方便開(kāi)發(fā)需要,本文檔基于在windows上開(kāi)發(fā)編寫(xiě)的。

            

            第一節(jié)   安裝和運(yùn)行Heritrix ,Heritrix的基本配置文件說(shuō)明

             可以到sourceforge上找到heritrix的官方下載地址http://sourceforge.net/projects/archive-crawler下載。

             軟件支持:

          因?yàn)?font face="Times New Roman">heritrix使用java編寫(xiě)的,所以需要jdk,筆者的下載的是目前最新版本的heritrix 1.14.3版本),需要安裝jdk1.5以后的版本jdk,故筆者安裝了jdk1.6

          硬件支持:

          Heritrix對(duì)硬件要求不高,默認(rèn)需要256M內(nèi)存運(yùn)行,也可以修改具體見(jiàn)后面對(duì)啟動(dòng)腳本的修改部分。

          假定 把下載包heritrix1.14.3.zip 解壓縮到 E:\develop\opensource\heritrix-1.14.3  目錄下。

          假定jdk的安裝目錄是 d:/program files/java 目錄下。

          設(shè)定環(huán)境變量

          JAVA_HOME            D:\Program Files\java\jdk1.6.0_02

          HERITRIX_HOME       E:\develop\opensource\heritrix-1.14.3\heritrix-1.14.3

          設(shè)置完成之后,打開(kāi)dos窗口,進(jìn)入 $HERITRIX_HOME\bin目錄下,運(yùn)行 

              heritrix --help

          控制臺(tái)會(huì)輸出 heritrix啟動(dòng)的命令參數(shù):

            Usage: heritrix --help

            Usage: heritrix --nowui ORDER.XML

            Usage: heritrix [--port=#] [--run] [--bind=IP,IP...] --admin=LOGIN:PASSWORD \

                [ORDER.XML]

            Usage: heritrix [--port=#] --selftest[=TESTNAME]

            Version: @VERSION@

            Options:

             -b,--bind       Comma-separated list of IP addresses or hostnames for web

                             server to listen on.  Set to / to listen on all available

                             network interfaces.  Default is 127.0.0.1.

             -a,--admin      Login and password for web user interface administration.

                             Required (unless passed via the 'heritrix.cmdline.admin'

                             system property).  Pass value of the form 'LOGIN:PASSWORD'.

             -h,--help       Prints this message and exits.

             -n,--nowui      Put heritrix into run mode and begin crawl using ORDER.XML. Do

                             not put up web user interface.

             -p,--port       Port to run web user interface on.  Default: 8080.

             -r,--run        Put heritrix into run mode. If ORDER.XML begin crawl.

             -s,--selftest   Run the integrated selftests. Pass test name to test it only

                             (Case sensitive: E.g. pass 'Charset' to run charset selftest).

            Arguments:

             ORDER.XML       Crawl order to run.

          運(yùn)行  heritrix --admin=LOGIN:PASSWORD

           至此,heritrix的守護(hù)進(jìn)程就啟動(dòng)起來(lái)了。簡(jiǎn)單吧,不過(guò)別高興,麻煩的事情還在后面。

          Heritrix的配置文件:

             Heritrix的啟動(dòng)腳本文件是 bin目錄下的heritrix文件,java虛擬機(jī)的環(huán)境設(shè)置可以在這個(gè)文件里修改,例如前面提到的修改內(nèi)存大小可以在這個(gè)文件中加入:

          % JAVA_OPTS="-Xmx512m"

          把虛擬機(jī)使用的最大內(nèi)存改成512m

          另外也可以在 控制臺(tái) 在啟動(dòng)heritrix時(shí)通過(guò)命令行改變heritrix行為,同時(shí)也可以修改conf目錄下的heritrix.properties文件,來(lái)改變heritrix的行為。下面介紹一些heritrix常用的屬性配置:

          Heritrix.version   配置heritirx的版本

           heritrix.jobsdir = jobs  配置 抓取的文件存放路徑,默認(rèn)存放到 $HERITRIX_HOME/jbos 目錄下。

          heritrix.cmdline.admin = admin:admin   可以在這里寫(xiě)好登錄的用戶名密碼,也可以在啟動(dòng)的時(shí)候通過(guò)命令行指定

          heritrix.cmdline.port = 8080   web ui控制端訪問(wèn)的端口

          heritrix.cmdline.run = false  如果設(shè)置成trueheritrix在啟動(dòng)時(shí),就會(huì)把所有的job啟動(dòng)。

          heritrix.cmdline.nowui = false  如果設(shè)置成true,會(huì)阻止通過(guò)web方式操作爬蟲(chóng) 控制臺(tái)

          heritrix.cmdline.order =  如果設(shè)置了一個(gè)string的 文件目錄值,將會(huì)使用用戶指定的orderXml文件

          heritrix.cmdline.jmxserver = false

          heritrix.cmdline.jmxserver.port = 8081

          以上配置完成,就可以啟動(dòng)heritrix,并且通過(guò)web ui的方式訪問(wèn)了 http://127.0.0.1:8080/admin。進(jìn)入login頁(yè)面輸入在配置文件中配置的用戶名密碼。就可以進(jìn)入控制臺(tái)了。

          第二節(jié)  定制第一個(gè)網(wǎng)頁(yè)抓取任務(wù) 

           啟動(dòng)heritrix,通過(guò)瀏覽器訪問(wèn) http://127.0.0.1:8080/admin, 輸入用戶名密碼,進(jìn)入控制臺(tái)。點(diǎn)擊job 標(biāo)簽頁(yè),點(diǎn)擊 with default 使用默認(rèn)的描述文件創(chuàng)建一個(gè)抓取job,打開(kāi)的窗口:

          Name of new job :隨便輸入一個(gè)方面自己記憶的名字

          Description:  隨便輸入

          Seeds:  輸入要抓取的種子頁(yè)面。例如要抓取 某個(gè)網(wǎng)站的所有產(chǎn)品頁(yè)面的詳細(xì)信息,那么種子應(yīng)該是這些產(chǎn)品的列表頁(yè)面,也就是說(shuō)從這個(gè)頁(yè)面可以進(jìn)入每個(gè)產(chǎn)品的詳細(xì)頁(yè)面。

          填寫(xiě)完成之后點(diǎn)擊modules,進(jìn)入設(shè)置頁(yè)面,可以設(shè)置的項(xiàng)比較多,這里只挑幾個(gè)重點(diǎn)的介紹下:

          Select Crawl Scope

           BroadScope  從字面上理解應(yīng)該是最大范圍的抓取,個(gè)人感覺(jué)應(yīng)該是最大深度的爬取網(wǎng)頁(yè)

          其他的幾個(gè),筆者沒(méi)有用到,暫時(shí)不做介紹了,免得寫(xiě)的有出入誤導(dǎo)讀者。

          Select URI Frontier 

             

          Url 處理器它將決定下一個(gè)被處理的URL是什么。同時(shí),它還會(huì)將經(jīng)由處理器鏈所解析出來(lái)的URL加入到等待處理的隊(duì)列中去。

          BDBFronter  heritrix 默認(rèn)使用的處理器。這個(gè)類的具體邏輯沒(méi)有仔細(xì)研究過(guò),因?yàn)楣P者寫(xiě)了自己的fronter類,來(lái)完成處理邏輯,在后面的章節(jié)里面介紹

          這兩個(gè)配置是最核心的配置,后面還有5個(gè)配置,都是可以自己定制的。大致看下就明白是什么意思了,在這里就不贅述了。特別強(qiáng)調(diào)下Select Writers  的配置,主要是用于將所抓取到的信息寫(xiě)入磁盤(pán)。通常寫(xiě)入磁盤(pán)時(shí)有兩種形式,一種是采用壓縮的方式寫(xiě)入,在這里被稱為Arc方式,另一種則采用鏡象方式寫(xiě)入。當(dāng)然處理起來(lái),鏡象方式要更為容易一些,因此 用mirror方式存儲(chǔ)。

          關(guān)于module里面配置,如果想了解每個(gè)配置節(jié)點(diǎn)都是什么意思,可以看下官方文檔,里面有有每個(gè)選項(xiàng)的詳細(xì)字典說(shuō)明

          設(shè)置完module,點(diǎn)擊setting鏈接,進(jìn)入job設(shè)置頁(yè)面,這個(gè)頁(yè)面的設(shè)置也比較容易理解。這里特殊說(shuō)下http-headers的配置:

            User-agent  模擬瀏覽器的header,里面請(qǐng)?zhí)顚?xiě)客戶段的瀏覽器的user-agent

             Mozilla/5.0 (compatible; heritrix/1.14.3 +PROJECT_URL_HERE),把PROJECT_URL_HERE 替換成任意一個(gè)帶有http的完整鏈接即可例如:http://192.168.10.123

          From 里面隨便填寫(xiě)一個(gè)email格式的email地址即可,不必是真實(shí)的email地址。

          其他的配置,都比較容易理解,如果有不清楚的,可以點(diǎn)擊每個(gè)輸入框前面的問(wèn)號(hào),heritrix會(huì)告訴你這個(gè)輸入框里的值是用來(lái)做什么的,應(yīng)該填寫(xiě)什么值。

          這個(gè)頁(yè)面配置完成后,就可以提交job了。提交之后,進(jìn)入到cosole主控制臺(tái)頁(yè)面,應(yīng)該可以看到剛才創(chuàng)建的job,點(diǎn)擊start 開(kāi)始執(zhí)行任務(wù)了。 在控制臺(tái)上可以監(jiān)控到任務(wù)執(zhí)行時(shí),系統(tǒng)的資源消耗情況和任務(wù)執(zhí)行情況,同時(shí)也可以隨時(shí)暫停任務(wù)和終止任務(wù)。

          小結(jié) :       至此一個(gè)簡(jiǎn)單的抓取任務(wù),就建立完成可以開(kāi)始工作了,但是以上的配置使用的都是heritrix的默認(rèn)提供的實(shí)例來(lái)完成的,針對(duì)每個(gè)垂直搜索引擎,對(duì)數(shù)據(jù)的抓取,都有特定的約束需求,那么就需要定制自己的實(shí)例來(lái)完成抓取任務(wù),下面我們進(jìn)入heritrix的開(kāi)發(fā)階段,定制自己的web爬蟲(chóng)。

          第三節(jié) :開(kāi)發(fā),定制自己的web爬蟲(chóng)

                
             本人的word的文檔暫時(shí)寫(xiě)到這里,明天繼續(xù)補(bǔ)充。
          posted on 2009-06-26 02:35 鄧兵野 閱讀(3887) 評(píng)論(2)  編輯  收藏

          FeedBack:
          # re: 基于lucence+heritrix的開(kāi)源搜索引擎構(gòu)建(一)
          2009-06-30 22:10 | hongyejie@tom.com
          能幫個(gè)忙么?我有段JAVA編寫(xiě)的爬蟲(chóng)程序,是老師布置的,讓我們注釋,實(shí)在太難了,我不會(huì)!你能幫我注釋一下嗎!?
          姓名是我的郵箱,希望你能給我郵件!!謝謝!  回復(fù)  更多評(píng)論
            
          # re: 基于lucence+heritrix的開(kāi)源搜索引擎構(gòu)建(一)[未登錄](méi)
          2009-07-16 17:24 | google
          500塊錢(qián),我?guī)湍銓?xiě);哈哈。  回復(fù)  更多評(píng)論
            

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           

          <2009年7月>
          2829301234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 读书| 常山县| 庆阳市| 响水县| 同江市| 长葛市| 师宗县| 聂荣县| 凌云县| 丹江口市| 陆川县| 米易县| 内黄县| 甘南县| 磐安县| 类乌齐县| 大理市| 溧水县| 自治县| 嵊州市| 军事| 博爱县| 峨边| 沈丘县| 锡林浩特市| 淮南市| 马山县| 山丹县| 宽城| 永嘉县| 孝昌县| 儋州市| 尉犁县| 景东| 磐石市| 昔阳县| 辽宁省| 怀来县| 裕民县| 陇川县| 宜良县|