Загрузка большого текстового файла Facebook в память (39 МБ) для автозаполнения - PullRequest
0 голосов
/ 07 сентября 2011

Я пытаюсь реализовать часть API объявлений Facebook, функцию автозаполнения ads.getAutoCompleteData

По сути, Facebook предоставляет этот файл размером 39 МБ, который обновляется еженедельно и содержит таргетинг.данные об объявлениях, включая колледжи, специализированные колледжи, рабочие места, локали, страны, регионы и города.

Наше приложение должно получить доступ ко всем этим объектам и предоставить автозаполнение, используя данные этого файла.

I 'Я думаю о предпочтительных способах решения этой проблемы.Я думал об одном из следующих вариантов:

  1. Загрузка его в память с помощью Trie ( Patricia-trie ), недостаток, конечно, в том, что он отнимает слишком много памятиserver.
  2. При использовании специальной поисковой платформы, такой как Solr , на другом компьютере недостатком может быть чрезмерное проектирование (хотя размер файла в будущем, вероятно, значительно увеличится).
  3. (Заполните здесь классный, легкий и вариант скорости света)?

Ну, а как вы думаете?

1 Ответ

1 голос
/ 07 сентября 2011

Я бы придерживался сервис-ориентированной архитектуры (особенно если продукт должен обрабатывать большие объемы) и пошел бы с Solr. Тем не менее, 39 МБ - это не слишком большая память, если речь идет о синглтоне. С индексами и всем этим до чего дойдут? 400MB? Это, конечно, зависит от того, что делает ваш продукт и на каком оборудовании вы хотите его запустить.

Я хотел бы пойти с Solr или написать свой собственный сервис, который считывает файл в быструю БД, такую ​​как таблица MyISAM MySQL (или даже таблица в памяти), и использовать функцию текстового поиска mysql для отображения результатов. За исключением того, что я бы попытался использовать Solr в качестве службы.

Преимущество написания моего собственного сервиса состоит в том, что я знаю, что происходит, недостатком является то, что он не будет таким мощным, как Solr. Тем не менее, я подозреваю, что создание собственного сервиса займет меньше времени.

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

Только мои 2 цента.

...