Опубликованные ответы работают нормально, но у меня есть библиотека автозаполнения с открытым исходным кодом, которую я написал на работе. Мы уже давно используем его в производстве, и он быстрый, стабильный и простой в использовании. Он даже имеет демонстрационный режим, поэтому вы можете быстро проверить, что вы получите, набирая слова.
Чтобы установить его, просто запустите: pip install fast-autocomplete
Вот пример:
>>> from fast_autocomplete import AutoComplete
>>> words = {'book': {}, 'burrito': {}, 'pizza': {}, 'pasta':{}}
>>> autocomplete = AutoComplete(words=words)
>>> autocomplete.search(word='b', max_cost=3, size=3)
[['book'], ['burrito']]
>>> autocomplete.search(word='bu', max_cost=3, size=3)
[['burrito']]
>>> autocomplete.search(word='barrito', max_cost=3, size=3) # mis-spelling
[['burrito']]
Оформить заказ: https://github.com/wearefair/fast-autocomplete для исходного кода.
А вот объяснение того, как это работает: http://zepworks.com/posts/you-autocomplete-me/
Имеется дело с неправильным написанием и, возможно, сортировкой по весу слова. (Допустим, burrito
важнее, чем book
, тогда вы дадите burrito
большее «число», и оно будет отображаться раньше, чем book
в результатах.
Слова - это словарь, и каждое слово может иметь контекст. Например, «считать», как отобразить слово, какой-то другой контекст вокруг слова и т. Д. В этом примере слова не имеют никакого контекста.