2011-08-23 51 views
0

我正在使用一種方法刪除文件中定義的停用詞,它將從我傳遞給此方法的查詢字符串中剔除這些詞...代碼正常工作在Java中刪除停用詞---需要幫助

現在我需要做的是...如果查詢字符串包含只是那些停止詞單獨那麼它不應該被撕開的..

例如:如果停用詞文件中有「是」,「是」 「和」

如果查詢是「我是學生」,那麼輸出應該是「我是學生」

但如果查詢是「和是」現在我需要輸出相同的「和是」。

下面是我寫的刪除停用詞的方法。

public static String removeStopWords(String query) throws UnsupportedEncodingException 
    { 
     String []queryTerms = query.split("&"); 
     String queryString=""; 
     StringBuffer sb =new StringBuffer(); 
     for (int i=0;i<queryTerms.length;i++){ 
      if(queryTerms[i].startsWith("q=") && !queryTerms[i].startsWith("q.orig")){ 
       queryString = queryTerms[i].replaceAll("q=","").trim().replace("+"," ").replaceAll("\\s+"," ").trim(); 
       } 

     } 
     if(!queryString.equalsIgnoreCase("")) { 
     String [] tokens=queryString.split("\\s+"); 
     List lStopWords=StopWordDataLoad.getlQueryStringStopword(); 
     List<String> lTokens=new ArrayList<String>(); 
     boolean noStopWord=false; 
     for(String s: tokens) 
     if(!lStopWords.contains(s)) { 
       if(sb.length()==0) sb.append(s); 
        else sb.append(" ").append(s); 
      } else noStopWord=true; 

     queryString=sb.toString().replaceAll("\\s+", " "); 
     if(queryString.equalsIgnoreCase("") || noStopWord ==false) return query; 
     } 
     else return query; 


     String fque=""; 
     String finQue = ""; 
     ArrayList<String> list = new ArrayList<String>(); 
     for (int i=0;i<queryTerms.length;i++){ 
      if(queryTerms[i].startsWith("q=") && !queryTerms[i].startsWith("q.orig")){ 
       fque = "q="+URLEncoder.encode(queryString,PropertyLoader.getHttpEncoding()); 
       list.add(fque); 

      } else if (!queryTerms[i].equalsIgnoreCase("")) list.add(queryTerms[i]); 
     } 
     ListIterator<String> iter = list.listIterator(); 
     while(iter.hasNext()){ 
      String str = iter.next(); 
      finQue=finQue+"&"+str; 
     } 


     return finQue.trim(); 

    } 

回答

2

只需更改最後一行是:

String result = finQue.trim(); 
if (result.equals("")) { 
    return query; 
} else { 
    return result; 
} 
+0

感謝馬克.. :) – Jeyaprakash