Home | History | Annotate | Download | only in language

Lines Matching refs:value

23  * Encodes a string into a double metaphone value.
73 * Encode a value with Double Metaphone
75 * @param value String to encode
78 public String doubleMetaphone(String value) {
79 return doubleMetaphone(value, false);
83 * Encode a value with Double Metaphone, optionally using the alternate
86 * @param value String to encode
90 public String doubleMetaphone(String value, boolean alternate) {
91 value = cleanInput(value);
92 if (value == null) {
96 boolean slavoGermanic = isSlavoGermanic(value);
97 int index = isSilentStart(value) ? 1 : 0;
101 while (!result.isComplete() && index <= value.length() - 1) {
102 switch (value.charAt(index)) {
109 index = handleAEIOUY(value, result, index);
113 index = charAt(value, index + 1) == 'B' ? index + 2 : index + 1;
121 index = handleC(value, result, index);
124 index = handleD(value, result, index);
128 index = charAt(value, index + 1) == 'F' ? index + 2 : index + 1;
131 index = handleG(value, result, index, slavoGermanic);
134 index = handleH(value, result, index);
137 index = handleJ(value, result, index, slavoGermanic);
141 index = charAt(value, index + 1) == 'K' ? index + 2 : index + 1;
144 index = handleL(value, result, index);
148 index = conditionM0(value, index) ? index + 2 : index + 1;
152 index = charAt(value, index + 1) == 'N' ? index + 2 : index + 1;
160 index = handleP(value, result, index);
164 index = charAt(value, index + 1) == 'Q' ? index + 2 : index + 1;
167 index = handleR(value, result, index, slavoGermanic);
170 index = handleS(value, result, index, slavoGermanic);
173 index = handleT(value, result, index);
177 index = charAt(value, index + 1) == 'V' ? index + 2 : index + 1;
180 index = handleW(value, result, index);
183 index = handleX(value, result, index);
186 index = handleZ(value, result, index, slavoGermanic);
198 * Encode the value using DoubleMetaphone. It will only work if
213 * Encode the value using DoubleMetaphone.
215 * @param value String to encode
218 public String encode(String value) {
219 return doubleMetaphone(value);
238 * are equal, optionally using the alternate value.
242 * @param alternate use the alternate value if <code>true</code>.
274 private int handleAEIOUY(String value, DoubleMetaphoneResult result, int
285 private int handleC(String value,
288 if (conditionC0(value, index)) { // very confusing, moved out
291 } else if (index == 0 && contains(value, index, 6, "CAESAR")) {
294 } else if (contains(value, index, 2, "CH")) {
295 index = handleCH(value, result, index);
296 } else if (contains(value, index, 2, "CZ") &&
297 !contains(value, index - 2, 4, "WICZ")) {
301 } else if (contains(value, index + 1, 3, "CIA")) {
305 } else if (contains(value, index, 2, "CC") &&
306 !(index == 1 && charAt(value, 0) == 'M')) {
308 return handleCC(value, result, index);
309 } else if (contains(value, index, 2, "CK", "CG", "CQ")) {
312 } else if (contains(value, index, 2, "CI", "CE", "CY")) {
314 if (contains(value, index, 3, "CIO", "CIE", "CIA")) {
322 if (contains(value, index + 1, 2, " C", " Q", " G")) {
325 } else if (contains(value, index + 1, 1, "C", "K", "Q") &&
326 !contains(value, index + 1, 2, "CE", "CI")) {
339 private int handleCC(String value,
342 if (contains(value, index + 2, 1, "I", "E", "H") &&
343 !contains(value, index + 2, 2, "HU")) {
345 if ((index == 1 && charAt(value, index - 1) == 'A') ||
346 contains(value, index - 1, 5, "UCCEE", "UCCES")) {
365 private int handleCH(String value,
368 if (index > 0 && contains(value, index, 4, "CHAE")) { // Michael
371 } else if (conditionCH0(value, index)) {
375 } else if (conditionCH1(value, index)) {
381 if (contains(value, 0, 2, "MC")) {
396 private int handleD(String value,
399 if (contains(value, index, 2, "DG")) {
401 if (contains(value, index + 2, 1, "I", "E", "Y")) {
409 } else if (contains(value, index, 2, "DT", "DD")) {
422 private int handleG(String value,
426 if (charAt(value, index + 1) == 'H') {
427 index = handleGH(value, result, index);
428 } else if (charAt(value, index + 1) == 'N') {
429 if (index == 1 && isVowel(charAt(value, 0)) && !slavoGermanic) {
431 } else if (!contains(value, index + 2, 2, "EY") &&
432 charAt(value, index + 1) != 'Y' && !slavoGermanic) {
438 } else if (contains(value, index + 1, 2, "LI") && !slavoGermanic) {
441 } else if (index == 0 && (charAt(value, index + 1) == 'Y' || contains(value, index + 1, 2, ES_EP_EB_EL_EY_IB_IL_IN_IE_EI_ER))) {
445 } else if ((contains(value, index + 1, 2, "ER") ||
446 charAt(value, index + 1) == 'Y') &&
447 !contains(value, 0, 6, "DANGER", "RANGER", "MANGER") &&
448 !contains(value, index - 1, 1, "E", "I") &&
449 !contains(value, index - 1, 3, "RGY", "OGY")) {
453 } else if (contains(value, index + 1, 1, "E", "I", "Y") ||
454 contains(value, index - 1, 4, "AGGI", "OGGI")) {
456 if ((contains(value, 0 ,4, "VAN ", "VON ") || contains(value, 0, 3, "SCH")) || contains(value, index + 1, 2, "ET")) {
459 } else if (contains(value, index + 1, 4, "IER")) {
465 } else if (charAt(value, index + 1) == 'G') {
478 private int handleGH(String value,
481 if (index > 0 && !isVowel(charAt(value, index - 1))) {
485 if (charAt(value, index + 2) == 'I') {
491 } else if ((index > 1 && contains(value, index - 2, 1, "B", "H", "D")) ||
492 (index > 2 && contains(value, index - 3, 1, "B", "H", "D")) ||
493 (index > 3 && contains(value, index - 4, 1, "B", "H"))) {
497 if (index > 2 && charAt(value, index - 1) == 'U' &&
498 contains(value, index - 3, 1, "C", "G", "L", "R", "T")) {
501 } else if (index > 0 && charAt(value, index - 1) != 'I') {
512 private int handleH(String value,
516 if ((index == 0 || isVowel(charAt(value, index - 1))) &&
517 isVowel(charAt(value, index + 1))) {
530 private int handleJ(String value, DoubleMetaphoneResult result, int index,
532 if (contains(value, index, 4, "JOSE") || contains(value, 0, 4, "SAN ")) {
534 if ((index == 0 && (charAt(value, index + 4) == ' ') ||
535 value.length() == 4) || contains(value, 0, 4, "SAN ")) {
542 if (index == 0 && !contains(value, index, 4, "JOSE")) {
544 } else if (isVowel(charAt(value, index - 1)) && !slavoGermanic &&
545 (charAt(value, index + 1) == 'A' || charAt(value, index + 1) == 'O')) {
547 } else if (index == value.length() - 1) {
549 } else if (!contains(value, index + 1, 1, L_T_K_S_N_M_B_Z) && !contains(value, index - 1, 1, "S", "K", "L")) {
553 if (charAt(value, index + 1) == 'J') {
565 private int handleL(String value,
569 if (charAt(value, index + 1) == 'L') {
570 if (conditionL0(value, index)) {
583 private int handleP(String value,
586 if (charAt(value, index + 1) == 'H') {
591 index = contains(value, index + 1, 1, "P", "B") ? index + 2 : index + 1;
599 private int handleR(String value,
603 if (index == value.length() - 1 && !slavoGermanic &&
604 contains(value, index - 2, 2, "IE") &&
605 !contains(value, index - 4, 2, "ME", "MA")) {
610 return charAt(value, index + 1) == 'R' ? index + 2 : index + 1;
616 private int handleS(String value,
620 if (contains(value, index - 1, 3, "ISL", "YSL")) {
623 } else if (index == 0 && contains(value, index, 5, "SUGAR")) {
627 } else if (contains(value, index, 2, "SH")) {
628 if (contains(value, index + 1, 4,
636 } else if (contains(value, index, 3, "SIO", "SIA") || contains(value, index, 4, "SIAN")) {
644 } else if ((index == 0 && contains(value, index + 1, 1, "M", "N", "L", "W")) || contains(value, index + 1, 1, "Z")) {
650 index = contains(value, index + 1, 1, "Z") ? index + 2 : index + 1;
651 } else if (contains(value, index, 2, "SC")) {
652 index = handleSC(value, result, index);
654 if (index == value.length() - 1 && contains(value, index - 2,
661 index = contains(value, index + 1, 1, "S", "Z") ? index + 2 : index + 1;
669 private int handleSC(String value,
672 if (charAt(value, index + 2) == 'H') {
674 if (contains(value, index + 3,
677 if (contains(value, index + 3, 2, "ER", "EN")) {
684 if (index == 0 && !isVowel(charAt(value, 3)) && charAt(value, 3) != 'W') {
690 } else if (contains(value, index + 2, 1, "I", "E", "Y")) {
701 private int handleT(String value,
704 if (contains(value, index, 4, "TION")) {
707 } else if (contains(value, index, 3, "TIA", "TCH")) {
710 } else if (contains(value, index, 2, "TH") || contains(value, index,
712 if (contains(value, index + 2, 2, "OM", "AM") ||
714 contains(value, 0, 4, "VAN ", "VON ") ||
715 contains(value, 0, 3, "SCH")) {
723 index = contains(value, index + 1, 1, "T", "D") ? index + 2 : index + 1;
731 private int handleW(String value,
734 if (contains(value, index, 2, "WR")) {
739 if (index == 0 && (isVowel(charAt(value, index + 1)) ||
740 contains(value, index, 2, "WH"))) {
741 if (isVowel(charAt(value, index + 1))) {
749 } else if ((index == value.length() - 1 && isVowel(charAt(value, index - 1))) ||
750 contains(value, index - 1,
752 contains(value, 0, 3, "SCH")) {
756 } else if (contains(value, index, 4, "WICZ", "WITZ")) {
770 private int handleX(String value,
777 if (!((index == value.length() - 1) &&
778 (contains(value, index - 3, 3, "IAU", "EAU") ||
779 contains(value, index - 2, 2, "AU", "OU")))) {
783 index = contains(value, index + 1, 1, "C", "X") ? index + 2 : index + 1;
791 private int handleZ(String value, DoubleMetaphoneResult result, int index,
793 if (charAt(value, index + 1) == 'H') {
798 if (contains(value, index + 1, 2, "ZO", "ZI", "ZA") || (slavoGermanic && (index > 0 && charAt(value, index - 1) != 'T'))) {
803 index = charAt(value, index + 1) == 'Z' ? index + 2 : index + 1;
813 private boolean conditionC0(String value, int index) {
814 if (contains(value, index, 4, "CHIA")) {
818 } else if (isVowel(charAt(value, index - 2))) {
820 } else if (!contains(value, index - 1, 3, "ACH")) {
823 char c = charAt(value, index + 2);
825 || contains(value, index - 2, 6, "BACHER", "MACHER");
832 private boolean conditionCH0(String value, int index) {
835 } else if (!contains(value, index + 1, 5, "HARAC", "HARIS") &&
836 !contains(value, index + 1, 3, "HOR", "HYM", "HIA", "HEM")) {
838 } else if (contains(value, 0, 5, "CHORE")) {
848 private boolean conditionCH1(String value, int index) {
849 return ((contains(value, 0, 4, "VAN ", "VON ") || contains(value, 0,
851 contains(value, index - 2, 6, "ORCHES", "ARCHIT", "ORCHID") ||
852 contains(value, index + 2, 1, "T", "S") ||
853 ((contains(value, index - 1, 1, "A", "O", "U", "E") || index == 0) &&
854 (contains(value, index + 2, 1, L_R_N_M_B_H_F_V_W_SPACE) || index + 1 == value.length() - 1)));
860 private boolean conditionL0(String value, int index) {
861 if (index == value.length() - 3 &&
862 contains(value, index - 1, 4, "ILLO", "ILLA", "ALLE")) {
864 } else if ((contains(value, index - 1, 2, "AS", "OS") ||
865 contains(value, value.length() - 1, 1, "A", "O")) &&
866 contains(value, index - 1, 4, "ALLE")) {
876 private boolean conditionM0(String value, int index) {
877 if (charAt(value, index + 1) == 'M') {
880 return contains(value, index - 1, 3, "UMB")
881 && ((index + 1) == value.length() - 1 || contains(value,
888 * Determines whether or not a value is of slavo-germanic orgin. A value is
891 private boolean isSlavoGermanic(String value) {
892 return value.indexOf('W') > -1 || value.indexOf('K') > -1 ||
893 value.indexOf("CZ") > -1 || value.indexOf("WITZ") > -1;
904 * Determines whether or not the value starts with a silent letter. It will
905 * return <code>true</code> if the value starts with any of 'GN', 'KN',
908 private boolean isSilentStart(String value) {
911 if (value.startsWith(SILENT_START[i])) {
938 protected char charAt(String value, int index) {
939 if (index < 0 || index >= value.length()) {
942 return value.charAt(index);
948 private static boolean contains(String value, int start, int length,
950 return contains(value, start, length,
957 private static boolean contains(String value, int start, int length,
959 return contains(value, start, length,
966 private static boolean contains(String value, int start, int length,
969 return contains(value, start, length,
976 private static boolean contains(String value, int start, int length,
979 return contains(value, start, length,
987 private static boolean contains(String value, int start, int length,
991 return contains(value, start, length,
999 private static boolean contains(String value, int start, int length,
1003 return contains(value, start, length,
1009 * Determines whether <code>value</code> contains any of the criteria
1013 protected static boolean contains(String value, int start, int length,
1016 if (start >= 0 && start + length <= value.length()) {
1017 String target = value.substring(start, start + length);
1045 public void append(char value) {
1046 appendPrimary(value);
1047 appendAlternate(value);
1055 public void appendPrimary(char value) {
1057 this.primary.append(value);
1061 public void appendAlternate(char value) {
1063 this.alternate.append(value);
1067 public void append(String value) {
1068 appendPrimary(value);
1069 appendAlternate(value);
1077 public void appendPrimary(String value) {
1079 if (value.length() <= addChars) {
1080 this.primary.append(value);
1082 this.primary.append(value.substring(0, addChars));
1086 public void appendAlternate(String value) {
1088 if (value.length() <= addChars) {
1089 this.alternate.append(value);
1091 this.alternate.append(value.substring(0, addChars));