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

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

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

    csusky

    常用鏈接

    統(tǒng)計(jì)

    最新評(píng)論

    Lucene的切詞 analysis包

    在搜索引擎中,切詞語(yǔ)是一個(gè)重要的部分,其中包括專有名詞的提取、詞的分割、詞的格式化等等。
    TokenStream 類幾乎是所有這些類的基類
    有兩個(gè)需要被子類實(shí)現(xiàn)的方法Token next() 和 close()
    首先來(lái)看analysis包,這個(gè)包主要是提供一些簡(jiǎn)單的詞匯化處理
    Tokenizer結(jié)尾的類是將要處理的字符串進(jìn)行分割成Token流,而根據(jù)分割的依據(jù)的又產(chǎn)生了以下幾個(gè)Tokenizer類
    首先Tokenizer類是所有以Tokenizer結(jié)尾的類的基
    然后是CharTokenizer,所有的以Tokenizer結(jié)尾的類都是從這個(gè)類繼承的
    這個(gè)類中有一個(gè)抽象方法
      protected abstract boolean isTokenChar(char c);
    另外一個(gè)需要被子類覆寫的方法
      protected char normalize(char c) {};
    是對(duì)單個(gè)字符進(jìn)行處理的方法譬如說(shuō)將英文字母全部轉(zhuǎn)化為小寫

    還有一個(gè)變量
    protected Reader input;
    這個(gè)讀取器是這些類所處理的數(shù)據(jù)的   數(shù)據(jù)源
    輸入一個(gè)Reader ,產(chǎn)生一個(gè)Token流


    這個(gè)方法是是否進(jìn)行切分的依據(jù),依次讀取char流,然后用這個(gè)方法對(duì)每個(gè)char進(jìn)行檢測(cè),如果返回false則將預(yù)先存儲(chǔ)在
    詞匯緩沖區(qū)中的char數(shù)組作為一個(gè)Token返回
    LetterTokenizer :
          protected boolean isTokenChar(char c) {
                  return Character.isLetter(c);
          }
    WhitespaceTokenizer:
          protected boolean isTokenChar(char c) {
                  return !Character.isWhitespace(c);
          } 
    LowerCaseTokenizer extends LetterTokenizer:
    protected char normalize(char c) {
          return Character.toLowerCase(c);
       }

       在構(gòu)造函數(shù)中調(diào)用super(in);進(jìn)行和 LetterTokenizer同樣的操作,但是在詞匯化之前所有的詞都轉(zhuǎn)化為小寫了
     
    然后是以Filter結(jié)尾的類,這個(gè)類簇主要是對(duì)已經(jīng)詞匯化的Token流進(jìn)行進(jìn)一步的處理
     輸入是Token流 , 輸出仍然是Token流。
    TokenFilter extends TokenStream  是所有這些類的父類
    protected TokenStream input;
    在TokenFilter 中有一個(gè)TokenStream 變量,是Filter類簇處理的數(shù)據(jù)源,而Filter類簇又是繼承了TokenStream 類的
    有一個(gè)public final Token next()方法,這個(gè)方法以TokenStream.next()產(chǎn)生的Token流 為處理源,產(chǎn)生的仍然是Token流
    只不過中間有一些處理的過程
    LowerCaseFilter:將所有的Token流的轉(zhuǎn)化為小寫
         t.termText = t.termText.toLowerCase();
    StopFilter:過濾掉一些停止詞,這些停止詞由構(gòu)造函數(shù)指定
         for (Token token = input.next(); token != null; token = input.next())
          if (!stopWords.contains(token.termText))
            return token;


    比較一下Tokenizer類簇和Filter類簇,可以知道
    Tokenizer類簇主要是對(duì)輸入的Reader流,實(shí)際上是字符流按照一定的規(guī)則進(jìn)行分割,產(chǎn)生出Token流
    其輸入是字符串的Reader流形式,輸出是Token流

    Filter類簇主要是對(duì)輸入的Token流進(jìn)行更進(jìn)一步的處理,如去除停止詞,轉(zhuǎn)化為小寫
    主要為一些格式化操作。
    由于Filter類簇的輸入輸出相同,所以可以嵌套幾個(gè)不同的Filter類,以達(dá)到預(yù)期的處理目的。
    前一個(gè)Filter類的輸出作為后一個(gè)Filter類的輸入
    而Tokenizer類簇由于輸入輸出不同,所以不能嵌套







    posted on 2008-05-30 14:47 曉宇 閱讀(1029) 評(píng)論(1)  編輯  收藏 所屬分類: LUCENE

    評(píng)論

    # re: Lucene的切詞 analysis包 2009-06-02 12:56 啊啊啊

    強(qiáng),真是我需要的  回復(fù)  更多評(píng)論   

    主站蜘蛛池模板: 午夜不卡久久精品无码免费| 国产成人自产拍免费视频| 中文字幕精品亚洲无线码二区| 亚洲av无码一区二区三区观看| 久操免费在线观看| 亚洲天堂中文字幕| 亚洲欧美国产国产一区二区三区| 妇女自拍偷自拍亚洲精品| 免费91最新地址永久入口| 国产乱色精品成人免费视频| 在线观看亚洲精品国产| 美女无遮挡拍拍拍免费视频| AV大片在线无码永久免费| 午夜毛片不卡高清免费| 久久综合九九亚洲一区| 亚洲av永久无码一区二区三区| 日韩精品免费一区二区三区| 成人福利在线观看免费视频| 最近免费中文字幕视频高清在线看| 香蕉大伊亚洲人在线观看| 国产自国产自愉自愉免费24区| 成人免费无码大片A毛片抽搐色欲| 亚洲性色精品一区二区在线| 国产精品免费_区二区三区观看 | 亚洲最大无码中文字幕| 永久免费观看的毛片的网站| 爱爱帝国亚洲一区二区三区| 亚洲精品无码99在线观看| 亚洲一区二区三区在线观看网站| 日韩a级毛片免费观看| a在线视频免费观看在线视频三区| 国产亚洲精久久久久久无码77777 国产亚洲精品成人AA片新蒲金 | 中文毛片无遮挡高清免费| 亚洲宅男永久在线| 免费视频淫片aa毛片| 九九全国免费视频| 免费a级毛片在线观看| 国产在线精品一区免费香蕉| 亚洲日本视频在线观看| 国产h肉在线视频免费观看| 亚洲AⅤ男人的天堂在线观看|