herodby
          技術 筆記
          posts - 14,  comments - 14,  trackbacks - 0

                   最近一直想寫個和搜索相關的東東,所以簡單了解搜索引擎方面的知識,個人總結一個垂直搜索引擎 包含以下幾個部分:
                   1   web 爬蟲,抓取目標頁面的內容。
                   2  數據預處理,把抓取下來的數據進行去噪,例如使用htmlparser等工具對去掉無用的標簽數據等等,把 
                       數據結構化DB或者其他存儲系統已被后面使用。
                   3. 建立索引。
                   4. 分詞,開發檢索因子, 對索引數據進行檢索。
                   5. 把檢索到的數據,在web段展現。
            下面就結合heritrix1.14.3  和lucence2.2.0,介紹下,整個搜索引擎的開發過程。

          基于lucence+heritrix的開源搜索引擎構建
                   

              基于lucence+heritrix的開源搜索引擎構建

          一 Heritrix

            簡介

             Heritrix是 一個用java編寫的,開源的,可擴展的 網絡爬蟲工具,嚴格遵守robot規范。 Heritrix,目前還沒有在windows測試過,linux環境測試通過。筆者為了方便開發需要,本文檔基于在windows上開發編寫的。

            

            第一節   安裝和運行Heritrix ,Heritrix的基本配置文件說明

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

             軟件支持:

          因為heritrix使用java編寫的,所以需要jdk,筆者的下載的是目前最新版本的heritrix 1.14.3版本),需要安裝jdk1.5以后的版本jdk,故筆者安裝了jdk1.6

          硬件支持:

          Heritrix對硬件要求不高,默認需要256M內存運行,也可以修改具體見后面對啟動腳本的修改部分。

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

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

          設定環境變量

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

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

          設置完成之后,打開dos窗口,進入 $HERITRIX_HOME\bin目錄下,運行 

              heritrix --help

          控制臺會輸出 heritrix啟動的命令參數:

            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.

          運行  heritrix --admin=LOGIN:PASSWORD

           至此,heritrix的守護進程就啟動起來了。簡單吧,不過別高興,麻煩的事情還在后面。

          Heritrix的配置文件:

             Heritrix的啟動腳本文件是 bin目錄下的heritrix文件,java虛擬機的環境設置可以在這個文件里修改,例如前面提到的修改內存大小可以在這個文件中加入:

          % JAVA_OPTS="-Xmx512m"

          把虛擬機使用的最大內存改成512m

          另外也可以在 控制臺 在啟動heritrix時通過命令行改變heritrix行為,同時也可以修改conf目錄下的heritrix.properties文件,來改變heritrix的行為。下面介紹一些heritrix常用的屬性配置:

          Heritrix.version   配置heritirx的版本

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

          heritrix.cmdline.admin = admin:admin   可以在這里寫好登錄的用戶名密碼,也可以在啟動的時候通過命令行指定

          heritrix.cmdline.port = 8080   web ui控制端訪問的端口

          heritrix.cmdline.run = false  如果設置成trueheritrix在啟動時,就會把所有的job啟動。

          heritrix.cmdline.nowui = false  如果設置成true,會阻止通過web方式操作爬蟲 控制臺

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

          heritrix.cmdline.jmxserver = false

          heritrix.cmdline.jmxserver.port = 8081

          以上配置完成,就可以啟動heritrix,并且通過web ui的方式訪問了 http://127.0.0.1:8080/admin。進入login頁面輸入在配置文件中配置的用戶名密碼。就可以進入控制臺了。

          第二節  定制第一個網頁抓取任務 

           啟動heritrix,通過瀏覽器訪問 http://127.0.0.1:8080/admin, 輸入用戶名密碼,進入控制臺。點擊job 標簽頁,點擊 with default 使用默認的描述文件創建一個抓取job,打開的窗口:

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

          Description:  隨便輸入

          Seeds:  輸入要抓取的種子頁面。例如要抓取 某個網站的所有產品頁面的詳細信息,那么種子應該是這些產品的列表頁面,也就是說從這個頁面可以進入每個產品的詳細頁面。

          填寫完成之后點擊modules,進入設置頁面,可以設置的項比較多,這里只挑幾個重點的介紹下:

          Select Crawl Scope

           BroadScope  從字面上理解應該是最大范圍的抓取,個人感覺應該是最大深度的爬取網頁

          其他的幾個,筆者沒有用到,暫時不做介紹了,免得寫的有出入誤導讀者。

          Select URI Frontier 

             

          Url 處理器它將決定下一個被處理的URL是什么。同時,它還會將經由處理器鏈所解析出來的URL加入到等待處理的隊列中去。

          BDBFronter  heritrix 默認使用的處理器。這個類的具體邏輯沒有仔細研究過,因為筆者寫了自己的fronter類,來完成處理邏輯,在后面的章節里面介紹

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

          關于module里面配置,如果想了解每個配置節點都是什么意思,可以看下官方文檔,里面有有每個選項的詳細字典說明

          設置完module,點擊setting鏈接,進入job設置頁面,這個頁面的設置也比較容易理解。這里特殊說下http-headers的配置:

            User-agent  模擬瀏覽器的header,里面請填寫客戶段的瀏覽器的user-agent

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

          From 里面隨便填寫一個email格式的email地址即可,不必是真實的email地址。

          其他的配置,都比較容易理解,如果有不清楚的,可以點擊每個輸入框前面的問號,heritrix會告訴你這個輸入框里的值是用來做什么的,應該填寫什么值。

          這個頁面配置完成后,就可以提交job了。提交之后,進入到cosole主控制臺頁面,應該可以看到剛才創建的job,點擊start 開始執行任務了。 在控制臺上可以監控到任務執行時,系統的資源消耗情況和任務執行情況,同時也可以隨時暫停任務和終止任務。

          小結 :       至此一個簡單的抓取任務,就建立完成可以開始工作了,但是以上的配置使用的都是heritrix的默認提供的實例來完成的,針對每個垂直搜索引擎,對數據的抓取,都有特定的約束需求,那么就需要定制自己的實例來完成抓取任務,下面我們進入heritrix的開發階段,定制自己的web爬蟲。

          第三節 :開發,定制自己的web爬蟲

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

          FeedBack:
          # re: 基于lucence+heritrix的開源搜索引擎構建(一)
          2009-06-30 22:10 | hongyejie@tom.com
          能幫個忙么?我有段JAVA編寫的爬蟲程序,是老師布置的,讓我們注釋,實在太難了,我不會!你能幫我注釋一下嗎!?
          姓名是我的郵箱,希望你能給我郵件!!謝謝!  回復  更多評論
            
          # re: 基于lucence+heritrix的開源搜索引擎構建(一)[未登錄]
          2009-07-16 17:24 | google
          500塊錢,我幫你寫;哈哈。  回復  更多評論
            

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

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

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 永寿县| 庆云县| 鹤壁市| 五寨县| 宾阳县| 东城区| 孝感市| 汕尾市| 丽江市| 天气| 聂拉木县| 平利县| 防城港市| 临桂县| 浦城县| 策勒县| 山东省| 达州市| 岚皋县| 常州市| 吴忠市| 高要市| 宝清县| 扶风县| 宁城县| 商河县| 鲁甸县| 财经| 页游| 昌平区| 文安县| 新巴尔虎左旗| 麦盖提县| 泰兴市| 五河县| 淅川县| 乐平市| 新泰市| 昌图县| 且末县| 巴南区|