2010-11-22 3 views
1

У меня есть поле автозаполнения, которое автоматически заполняется для всех стран, городов, районов, деревень, почтовых индексов. Это часть функции отслеживания местоположений, которую я создаю для своего веб-сайта. Таким образом, вы можете представить, что этот список будет находиться в нескольких миллионах строк. Ожидая более 20 миллионов, по крайней мере, со всеми деревнями и кодами. Чтобы сделать работу с автозаполнением, я буду использовать memcached, чтобы мы не попали в базу данных всегда, чтобы получить этот список. Он будет использоваться много, так как это основная функция на сайте. Но вопрос в следующем:Миллионы строк автоматическое заполнение поля - идеи реализации?

Является ли только 1 экземпляр списка, хранящегося в memcached, независимо от пользователей, которые вытаскивают информацию или ему нужно поддерживать отдельный экземпляр для каждого? Так что, если сказать, что 20 миллионов человек используют его в одно и то же время, это будет отличаться от 1 человека, использующего автозаполнение местоположения? Я открыт для других идей и о том, как реализовать это автоматическое заполнение местоположения, чтобы оно выполнялось хорошо.

Или я могу сделать что-то вроде этого: когда пользователь входит в систему в фоновом режиме, я отправляю им список в любом случае, поэтому к тому времени, когда они дойдут до автодополненного поля, их компьютер будет готов к загрузке моментально?

ответ

1

Посмотрите на Solr (или сам Lucene), используя токенизаторы NGram (или EdgeNGram), вы можете получить хорошую производительность автозаполнения на массивных наборах данных.

+0

Могу я использовать Sphinx вместо этого? Поток выглядит следующим образом: это поля на основе AJAX, поэтому мне нужно ударить их из AJAX. Другое дело, что мне нужен поиск ГИС в любом случае, поэтому я предпочитаю использовать только одну технологию, которая может помочь со всеми потребностями, а не поддерживать несколько технологий. – bone33

+0

Solr разработан специально для запросов Ajax. Я мало знаю о Сфинксе, но он кажется сопоставимым с Lucene/Solr. Просто взглянув на их сайт, они, похоже, подчеркивают пропускную способность индексации и прямую интеграцию с реляционными базами данных; С другой стороны, Lucene, похоже, имеет больше возможностей, особенно вокруг текстового анализа. Из того, что я слышал, их эффективность поиска довольно схожа (конечно, сильно зависит от конкретного варианта использования). Поскольку они реализуют одну и ту же модель данных, я бы предположил, что их возможности ГИС тоже схожи. – Dmitri

Смежные вопросы