Changes between Version 10 and Version 11 of waue/2011/0801


Ignore:
Timestamp:
Oct 19, 2011, 5:22:33 PM (13 years ago)
Author:
waue
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • waue/2011/0801

    v10 v11  
    141141
    142142
     143 * 修改中文分詞錯誤
     144
     145問題描述:
     146
     147由於Nutch不是原生支持中文的,開發者沒有考慮到中文的分詞會存在token的交叉重疊的情況,導致在根據用戶輸入查詢串的token獲取頁面summary時出現:StringIndexOutOfBoundsException的異常。比如:「教育方針」可能出現這樣的分詞「教育方針」、「教育」、「方針」,這幾個token就交叉重疊了。
     148
     149錯誤重現:
     150
     151java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.lang.StringIndexOutOfBoundsException: String index out of range: -4   at org.apache.nutch.searcher.FetchedSegments.getSummary(FetchedSegments.java:316)
     152
     153
     154修改:
     155
     156nutch/src/plugin/summary-basic/src/java/org/apache/nutch/summary/basic/BasicSummarizer.java
     157
     158{{{
     159#!java
     160...(no. 181)...
     161
     162        // fix begin
     163          Token t = tokens[j];
     164          if (highlight.contains(t.term())) {
     165            excerpt.addToken(t.term());
     166            if( offset < t.startOffset() ){
     167              excerpt.add(new Fragment(text.substring(offset, t.startOffset())));
     168              excerpt.add(new Highlight(text.substring(t.startOffset(),t.endOffset())));
     169            }
     170            if( offset >= t.startOffset() ){
     171              if( offset < t.endOffset() ){
     172                excerpt.add(new Highlight(text.substring(offset,t.endOffset())));
     173              }
     174            }
     175            offset = Math.max(offset, t.endOffset());
     176            endToken = Math.min(j + sumContext, tokens.length);
     177          }
     178          j++;
     179        } //while
     180        // fix over
     181
     182
     183}}}
     184
     185{{{
     186#!java
     187...(no. 181)...
     188
     189if(j<tokens.length){
     190
     191if(offset< tokens[j].endOffset()){
     192
     193excerpt.add(new Fragment(text.substring(offset,tokens[j].endOffset())));
     194
     195}
     196
     197}
     198}}}
     199
     200
    143201 * 重新編譯 nutch 並產生 nutch-job-1.2.job
    144202