Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除Java中的停止词---需要帮助_Java_File Io_Query String_Stop Words - Fatal编程技术网

删除Java中的停止词---需要帮助

删除Java中的停止词---需要帮助,java,file-io,query-string,stop-words,Java,File Io,Query String,Stop Words,我正在使用一种方法删除文件中定义的停止字,这将从我传递给此方法的查询字符串中删除这些字。。。代码运行良好 现在我需要做的是。。。如果查询字符串仅包含这些停止词,则不应将其删除 例如:如果stopwords文件有“is”“was”“and” 如果查询是“我是学生”,那么输出应该是“我是学生” 但是如果查询是“and is”,现在我需要与“and is”相同的输出 下面是我写的删除停止词的方法 public static String removeStopWords(String query) t

我正在使用一种方法删除文件中定义的停止字,这将从我传递给此方法的查询字符串中删除这些字。。。代码运行良好

现在我需要做的是。。。如果查询字符串仅包含这些停止词,则不应将其删除

例如:如果stopwords文件有“is”“was”“and”

如果查询是“我是学生”,那么输出应该是“我是学生”

但是如果查询是“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();

    }
publicstaticstringremovestopwords(字符串查询)抛出UnsupportedEncodingException
{
字符串[]queryTerms=query.split(&);
字符串queryString=“”;
StringBuffer sb=新的StringBuffer();

对于(int i=0;i只需将最后一行更改为:

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