2011-08-23 5 views
0

파일에 정의 된 중지 단어를 제거하는 방법을 사용하여이 방법으로 전달한 검색어 문자열에서 해당 단어를 제거합니다. 코드가 정상적으로 작동합니다. 쿼리 문자열이의 찢어해서는 안 후 혼자 단지 그 중지 단어가 포함 된 경우Java에서 정지 단어 제거 --- 도움 필요

지금 내가해야 할 일입니다 ... ..

예를 들면 다음 불용어 파일이있는 경우 "입니다" ""이었다 "및"

"나는 학생이었습니다"그러면 출력은 "학생"이됩니다.

하지만 쿼리가 "and is"이면 이제는 "and is"와 같은 출력이 필요합니다.

다음은 정지 단어를 제거하기 위해 작성한 방법입니다.

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