Загрузить и выполнить поиск по большому количеству данных - PullRequest
0 голосов
/ 11 июля 2011

Мне нужно подсказать, как работать с большим объемом данных на iPhone.Допустим, у меня есть XML-файл с ~ 120 тыс. Текстовых записей.Мне нужно выполнить поиск по этим данным.Решение, которое я попробовал, состоит в том, чтобы использовать Core Data для хранения информации в отсортированном порядке в кешах.А затем используйте бинарный поиск, который работает быстро.Но проблема в том, чтобы построить этот кеш.При первом запуске приложение занимает около 15-25 секунд, чтобы построить этот кеш.Может быть, мне нужно использовать другой подход для поиска данных?

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 03 августа 2011

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

На самом деле вам нужен один из типичных алгоритмов индексации (для хэша диска, B-дерева и т. д.) с самого начала.

Однако ...

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

Честно говоря, 120 КБ текста не очень много - звучит как любой XML-парсервы используете просто медленно(Я постоянно использую этот трюк для автоматически генерируемых данных XML, которые просто представляют такие вещи, как таблицы или простые записи данных - мой собственный анализатор работает быстрее, чем любой общий анализатор XML.)

Это, вероятно, решение, которое вам действительно нужнотак как вы звучите довольно привязанным к формату файла XML.Если вы не будете осторожны, он не будет таким же защищенным от ошибок, как универсальный синтаксический анализатор XML, однако он сожрет этот файл размером 120 КБ, как никто другой.И это работа CS начального уровня - чтение в файле с определенным форматированием и получение значений данных из него.Регэкспы - ваш друг, если у вас есть к ним доступ.

0 голосов
/ 11 июля 2011

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

Если вам не требуется ВСЕ сведения на устройстве ..

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