Удалить стоп-слова в 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();

    }

person Jeyaprakash    schedule 23.08.2011    source источник


Ответы (1)


Просто измените последнюю строку на эту:

String result = finQue.trim();
if (result.equals("")) {
    return query;
} else {
    return result;
}
person Mark Byers    schedule 23.08.2011