private int removeCase()

in lucene/analysis/common/src/java/org/apache/lucene/analysis/hu/HungarianLightStemmer.java [97:148]


  private int removeCase(char[] s, int len) {
    if (len > 6 && endsWith(s, len, "kent")) return len - 4;

    if (len > 5) {
      if (endsWith(s, len, "nak")
          || endsWith(s, len, "nek")
          || endsWith(s, len, "val")
          || endsWith(s, len, "vel")
          || endsWith(s, len, "ert")
          || endsWith(s, len, "rol")
          || endsWith(s, len, "ban")
          || endsWith(s, len, "ben")
          || endsWith(s, len, "bol")
          || endsWith(s, len, "nal")
          || endsWith(s, len, "nel")
          || endsWith(s, len, "hoz")
          || endsWith(s, len, "hez")
          || endsWith(s, len, "tol")) return len - 3;

      if (endsWith(s, len, "al") || endsWith(s, len, "el")) {
        if (!isVowel(s[len - 3]) && s[len - 3] == s[len - 4]) return len - 3;
      }
    }

    if (len > 4) {
      if (endsWith(s, len, "at")
          || endsWith(s, len, "et")
          || endsWith(s, len, "ot")
          || endsWith(s, len, "va")
          || endsWith(s, len, "ve")
          || endsWith(s, len, "ra")
          || endsWith(s, len, "re")
          || endsWith(s, len, "ba")
          || endsWith(s, len, "be")
          || endsWith(s, len, "ul")
          || endsWith(s, len, "ig")) return len - 2;

      if ((endsWith(s, len, "on") || endsWith(s, len, "en")) && !isVowel(s[len - 3]))
        return len - 2;

      switch (s[len - 1]) {
        case 't':
        case 'n':
          return len - 1;
        case 'a':
        case 'e':
          if (s[len - 2] == s[len - 3] && !isVowel(s[len - 2])) return len - 2;
      }
    }

    return len;
  }