seperman / fast-autocomplete

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

Return synonym matched for a word #42

Open charley-earlytracks opened 4 months ago

charley-earlytracks commented 4 months ago

Hello,

It would be useful to be able to retrieve the synonym that was matched for a specific word.

When calling the autocomplete.search("string", max_cost=2, size=3) We could add a boolean parameter return_synonym that would allow us to capture the synonym that matched such that we would receive a list of tuple words_and_synonyms = autocomplete.search("string", max_cost=2, size=3, return_synonym=True) words_and_synonyms [("snake","python"), ("programming language", "python"),("framework","pytorch")]

I tried to look into the code to find a way to do it, or even create a whole new autocomplete based only on the synonyms, but it won't always work as the links used are sometimes not the one created using the autocomplete with words and synonyms

seperman commented 4 months ago

Hi @charley-earlytracks We lose the synonym information because we create new "trie" branches for the synonyms from what I recall.

charley-earlytracks commented 4 months ago

Hey @seperman , Thank you for your prompt answer. I've looked at the code and indeed, you are creating a new Trie branch for the synonyms. I was just wondering how complex it would be to find the synonym that was matched.

Apart from that, great job with this tool! It works like a charm.