<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 241,  comments - 116,  trackbacks - 0

    經(jīng)過(guò)了幾天的折磨solr,公司又要求修改以前的一個(gè) nutch項(xiàng)目,這次修改的東西比較多了,涉及到索引字段和日期索引等,這個(gè)我們下次再講,今天我們來(lái)講一下nutch的中文分詞。這時(shí),我還是用了 IKAnalyzer,再次感謝作者的辛勞。提醒一下,這時(shí)用到的NUTCH是1.2版本。大智慧打不開(kāi)

    廢話不多說(shuō),我們現(xiàn)在開(kāi)始進(jìn)入正題:

    1)在我們修改之前,我們先去下載一個(gè)工具,javacc,一個(gè)JAVA編譯器,可以到這里來(lái)下載,http://java.net/projects/javacc/downloads,下載完成后當(dāng)然要解壓啦(廢話,呵呵),然后設(shè)置path把解壓的路徑添加到后面,確定可以從cmd進(jìn)入。

    2)我們需要添加中文分詞,首先需要找到 org.apache.nutch.analysis包內(nèi)的NutchAnalysis.jj這個(gè)文件,找到| <SIGRAM: <CJK> >,把它修改為<SIGRAM: (<CJK>)+ >。

    3)當(dāng)我們修改完成后,我們需要把它進(jìn)行重新編譯,我們先把 NutchAnalysis.jj拷到另外一個(gè)文件夾,免得生成的文件跟原有文件混淆了。在cmd中進(jìn)行拷貝的文件夾,例如我們拷到temp,在temp 目錄內(nèi)運(yùn)行javacc NutchAnalysis.jj這個(gè)命令,它會(huì)在當(dāng)前目錄下生成好幾個(gè)文件,把這幾個(gè)文件復(fù)制到org.apache.nutch.analysis包 內(nèi)(文件列表如下),直接覆蓋即可:

    注意,生成的文件NutchAnalysis.java會(huì)有錯(cuò)誤,只要拋出異常即可。

    修改完這時(shí)后,summary-basic的main函數(shù)會(huì)報(bào)錯(cuò),同樣也是異常的拋出問(wèn)題,只要在這時(shí)進(jìn)行捕獲就可以了。

    代碼修改如下:

    Java代碼  收藏代碼
    1.  Query query = null;  
    2. try {  
    3.     query = Query.parse(queryBuf.toString(), conf);  
    4. catch (ParseException e) {  
    5.     // TODO Auto-generated catch block  
    6.     e.printStackTrace();  
    7. }  

    4)當(dāng)我們修改完成后,剩下來(lái)的一個(gè)就是修改NutchDocumentAnalyzer.java中的tokenStream()方法,修改如下:

    Java代碼  收藏代碼
    1. public TokenStream tokenStream(String fieldName, Reader reader) {  
    2.     Analyzer analyzer;  
    3.     /*if ("anchor".equals(fieldName)) 
    4.       analyzer = ANCHOR_ANALYZER; 
    5.     else 
    6.       analyzer = CONTENT_ANALYZER;*/  
    7.     analyzer = new IKAnalyzer();  
    8.     TokenStream tokenStream = analyzer.tokenStream(fieldName,reader);  
    9.     tokenStream.addAttribute(TypeAttribute.class);  
    10.     tokenStream.addAttribute(FlagsAttribute.class);  
    11.     tokenStream.addAttribute(PayloadAttribute.class);  
    12.     tokenStream.addAttribute(PositionIncrementAttribute.class);  
    13.   
    14.     return tokenStream;  
    15.   }  

    這時(shí)是添加IKAnalyzer作為分詞器,當(dāng)然需要先把這個(gè)添加到lib目錄下。

    5)完成完上面的步驟,也許有些人就以為搞定了,但事情并沒(méi)這么簡(jiǎn)單,也許當(dāng)我們搜索的時(shí)候會(huì)突然報(bào)出一個(gè)什么沒(méi)有該Field的錯(cuò)誤,有點(diǎn)抱歉,這個(gè)錯(cuò)誤不能重現(xiàn)了。

    如果查詢時(shí)報(bào)什么錯(cuò)誤,我們可以試著在summary-basic插件的源碼中修改如下:

    添加修改getSummary方法:

    Java代碼  收藏代碼
    1. if (highlight.contains(t.term())) {  
    2.             excerpt.addToken(t.term());  
    3.             if(offset < t.startOffset()){  
    4.                 excerpt.add(new Fragment(text.substring(offset, t.startOffset())));  
    5.                 excerpt.add(new Highlight(text.substring(t.startOffset(),t.endOffset())));  
    6.             }else{  
    7.                 excerpt.add(new Highlight(text.substring(offset,t.endOffset())));  
    8.             }  
    9.             offset = t.endOffset();  
    10.             endToken = Math.min(j + sumContext, tokens.length);  
    11.           }  

      添加的為這段代碼

    Java代碼  收藏代碼
    1. if(offset < t.startOffset()){  
    2.             excerpt.add(new Fragment(text.substring(offset, t.startOffset())));  
    3.             excerpt.add(new Highlight(text.substring(t.startOffset(),t.endOffset())));  
    4.            }else{  
    5.             excerpt.add(new Highlight(text.substring(offset,t.endOffset())));  
    6.            }  

      這是修改getSummary時(shí)會(huì)出現(xiàn)數(shù)組溢出的錯(cuò)誤。

    當(dāng)完成這一系列操作之后,我們就可以在nutch目錄中用ant命令進(jìn)行編譯。編譯會(huì)重新生成所有jar包和job包。可以在build目錄下找到。

    我們需要把最主要的nutch-X.jar和nutch-X.job拷貝到需要進(jìn)行爬取和nutch目錄下進(jìn)行覆蓋。(其中的X為nutch的版本)

    接下來(lái),我們就可以重新運(yùn)行nutch crawl urls -dir crawl -depth 4 -threads 10 -topN 50 >&crawl.log,這樣生成的索引就已經(jīng)是經(jīng)過(guò)中文分詞的。

    posted on 2011-05-17 11:56 墻頭草 閱讀(1042) 評(píng)論(1)  編輯  收藏

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


    網(wǎng)站導(dǎo)航:
     
    人人游戲網(wǎng) 軟件開(kāi)發(fā)網(wǎng) 貨運(yùn)專家
    主站蜘蛛池模板: 久久99精品免费一区二区| 亚洲国产精品线观看不卡| 蜜桃传媒一区二区亚洲AV| 成年在线观看免费人视频草莓| 久久久久亚洲AV无码专区体验| 182tv免费视频在线观看| 久久精品国产亚洲夜色AV网站| 青柠影视在线观看免费高清| 亚洲国产精品无码久久一区二区| 你懂的在线免费观看| 精品无码国产污污污免费网站 | 亚洲AV无码久久精品色欲| 成人无码区免费A∨直播| 亚洲中文久久精品无码ww16| 少妇性饥渴无码A区免费| 久久精品国产亚洲| 4虎永免费最新永久免费地址| 亚洲免费黄色网址| 亚洲午夜久久久久久尤物| 日韩免费a级毛片无码a∨ | 国产18禁黄网站免费观看| 亚洲人配人种jizz| 日日操夜夜操免费视频| 又长又大又粗又硬3p免费视频| 亚洲中久无码永久在线观看同| 人妻在线日韩免费视频| 亚洲狠狠狠一区二区三区| 丁香花在线观看免费观看| 视频一区在线免费观看| 亚洲精品狼友在线播放| 四虎永久在线观看免费网站网址| 亚洲中文无码亚洲人成影院| 亚洲精品亚洲人成在线观看下载 | 一区二区三区免费视频播放器| 成年私人影院免费视频网站| 欧美激情综合亚洲一二区| 亚洲αv久久久噜噜噜噜噜| 最近中文字幕mv免费高清电影 | 亚洲A∨无码无在线观看| 无码人妻精品一二三区免费| 有码人妻在线免费看片|