seperman / fast-autocomplete

Fast Autocomplete: When Elastcsearch suggestions are not fast and flexible enough
MIT License
263 stars 40 forks source link

Casing issue with synonyms #35

Open iaudouard opened 2 years ago

iaudouard commented 2 years ago

Hi there, I have encountered a bug that occurs when the synonym key includes uppercase characters. I use the autocomplete for shows' titles, which have uppercase characters. The problem is that if I run the program below, nothing is returned as an autocomplete suggestion

def autocomplete(query, x):
    valid_chars = string.ascii_letters
    words = {
        'Attack on Titan': {}
    }
    synonyms = {

        "Attack on Titan": ["Shingeki no Kyojin", "AOT"],

    }
    autocomplete = AutoComplete(
        words=words, synonyms=synonyms, valid_chars_for_string=valid_chars)
    return autocomplete.search(word=query, size=x)

print(autocomplete('Shin', 5))

However if you change the key of both dictionaries to "attack on titan", the program works as expected.

Maurice-D-Elbee commented 2 years ago

Same issue on my side.

seperman commented 2 years ago

This is because by default fast autocomplete normalizes words. As a part of normalization, it lowercases everything. But seems like maybe it doesn't by default do it for the synonyms. I will make it normalize the synonyms in the next release.