Какие стратегии используются для реализации автозаполнения с опережением ввода в большом наборе данных? - PullRequest
4 голосов
/ 05 января 2010

Я являюсь разработчиком .NET WinForms / ASP.NET, и мне кажется, что это не зависящие от технологии вопросы о том, как реализовать «автозаполнение с опережением ввода» в большом наборе данных. Если бы кто-то мог указать мне на справочную реализацию или подробное обсуждение, это было бы здорово, но вот мои вопросы:

  1. Предположительно, пользователь начинает печатать, и через некоторый интервал клиент запрашивает у сервера данные, чтобы выполнить тип вперед. Есть ли эмпирическое правило, как долго этот интервал? Изменится ли это практическое правило по мере роста набора данных для поиска? Что если пользователь снова начнет печатать, но предыдущий запрос не был выполнен из-за размера набора данных?

  2. Какие стратегии запросов используются для извлечения набора данных? Очевидно, что запрос должен быть асинхронным, но это не просто SQL-запрос "% search%"? Какие стратегии сопоставления текста используются? Насколько строго этот набор данных кэшируется? Что если он слишком большой для кеширования?

  3. Существуют ли какие-либо другие стратегии, которые следует учитывать, когда мы говорим о веб-клиенте, использующем AJAX, а не о настольном приложении для толстого клиента?

В какой-то момент я посмотрю на конкретные реализации .NET, но меня больше интересуют стратегии на этом этапе.

1 Ответ

3 голосов
/ 05 января 2010

Чтобы ответить на ваш первый вопрос: Вы должны принять во внимание определенные факторы производительности. Система с низкой задержкой и высокой пропускной способностью соединения с быстрой и не перегруженной базой данных (возможно, даже локальной базой данных) может позволить более агрессивно опрашивать сервер и предоставлять конечному пользователю совершенно другие возможности автоматического заполнения.

Для интернет-приложений общее эмпирическое правило заключается в том, что пользователь должен ввести три символа, прежде чем активируется автозаполнение на сервере. В некоторых случаях это полностью меняется.

Полагаю, это относится и к вашему третьему вопросу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...