Я сделал это с помощью автозаполнения jQuery.
Я вернул (из своей базы данных) несколько возможных ответов.
Исходя из того, что было напечатано, у меня были группы приоритетов в возвращаемом списке, отсортированные по альфа в этом подразделе списка. Группы были:
- Точное совпадение - строки с точным совпадением
- Начинается с - строки, начинающиеся с введенных слов
- Содержит - разбить список слов, затем вернуть этот список.
Я сделал так, чтобы слова в списке возврата во введенном наборе были выделены в списке результатов возврата . В моих возвращаемых результатах была указана вся строка с совпадением и жирным шрифтом на совпадающих словах.
Вы можете легко использовать свой подход "слово плюс", чтобы сопоставить строки со словом, плюс следующее слово для каждого из списка слов, который вы описываете - вероятно, это будет применяться между "Begins" и "Contains". группы в моей стратегии, но ваши могут отличаться.
С точки зрения производительности, я использовал только около 10000 строк (до 255 символов каждая) в качестве возможного набора результатов и возвратил только ограниченный набор (скажем, 50 "наилучших совпадений" из исходного образца строк.