[fix] Prefixes and suffixes that are the same length as the original token should be handled as regular expansions
This commit is contained in:
@@ -437,8 +437,12 @@ inline void cat_affix_expansion(char_array *key, char *str, address_expansion_t
|
|||||||
bool add_affix_expansions(string_tree_t *tree, char *str, char *lang, token_t token, phrase_t prefix, phrase_t suffix, normalize_options_t options) {
|
bool add_affix_expansions(string_tree_t *tree, char *str, char *lang, token_t token, phrase_t prefix, phrase_t suffix, normalize_options_t options) {
|
||||||
cstring_array *strings = tree->strings;
|
cstring_array *strings = tree->strings;
|
||||||
|
|
||||||
bool have_suffix = suffix.len > 0;
|
bool have_suffix = suffix.len > 0 && suffix.len < token.len;
|
||||||
bool have_prefix = prefix.len > 0;
|
bool have_prefix = prefix.len > 0 && prefix.len < token.len;
|
||||||
|
|
||||||
|
if (!have_suffix && !have_prefix) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
address_expansion_array *prefix_expansions = NULL;
|
address_expansion_array *prefix_expansions = NULL;
|
||||||
address_expansion_array *suffix_expansions = NULL;
|
address_expansion_array *suffix_expansions = NULL;
|
||||||
@@ -470,6 +474,7 @@ bool add_affix_expansions(string_tree_t *tree, char *str, char *lang, token_t to
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!have_suffix && !have_prefix) {
|
if (!have_suffix && !have_prefix) {
|
||||||
|
char_array_destroy(key);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -556,7 +561,6 @@ bool add_affix_expansions(string_tree_t *tree, char *str, char *lang, token_t to
|
|||||||
char_array_clear(key);
|
char_array_clear(key);
|
||||||
root_word = cstring_array_get_string(root_strings, j);
|
root_word = cstring_array_get_string(root_strings, j);
|
||||||
char_array_cat(key, root_word);
|
char_array_cat(key, root_word);
|
||||||
|
|
||||||
root_end = key->n - 1;
|
root_end = key->n - 1;
|
||||||
|
|
||||||
for (int k = 0; k < suffix_expansions->n; k++) {
|
for (int k = 0; k < suffix_expansions->n; k++) {
|
||||||
@@ -645,6 +649,7 @@ inline bool expand_affixes(string_tree_t *tree, char *str, char *lang, token_t t
|
|||||||
|
|
||||||
if ((suffix.len == 0 && prefix.len == 0)) return false;
|
if ((suffix.len == 0 && prefix.len == 0)) return false;
|
||||||
|
|
||||||
|
|
||||||
return add_affix_expansions(tree, str, lang, token, prefix, suffix, options);
|
return add_affix_expansions(tree, str, lang, token, prefix, suffix, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user