Можно ли запустить iPad с 200 тысячами записей с помощью sqlite? - PullRequest
2 голосов
/ 06 сентября 2010

Текущая база данных имеет 200 тысяч записей.Я хочу сделать приложение для iPad, могу ли я запустить 200 тысяч записей с помощью sqlite?Я не хочу использовать sqlite, потому что поиск слишком медленный на 32000. Любой поисковик, как lucene для iPhone SDK?если мы сможем запустить lucene в iPad, это будет здорово, потому что текущий проект основан на lucene.Можете ли вы дать мне предложение?

Спасибо

Ответы [ 4 ]

2 голосов
/ 06 сентября 2010

Предлагаю создать свой собственный полнотекстовый индекс.Я не думаю, что SQLite на iPhone поддерживает триггеры, но вы все равно можете использовать алгоритм, аналогичный реализации полнотекстового поиска H2 .Идея состоит в том, чтобы разбить текстовые данные на слова, а затем добавить их в таблицу, индексированную по слову.Алгоритм для построения индекса относительно прост.Встроенный полнотекстовый поиск H2 не обладает всеми функциями полнотекстового поиска Lucene, но его гораздо проще реализовать.

1 голос
/ 06 сентября 2010

Это сообщение в блоге описывает перенос Lucene на Objective C. Вы можете попытаться использовать код, хотя он немного устарел.

1 голос
/ 06 сентября 2010

Я недавно создал приложение для iPhone с 86 000 строк и SQLite.

Сначала я не индексировал строку поиска, и поиск занял около 1 секунды для выполнения на iPod touch 2-го поколения. Как только я добавил свои индексы, поиск был мгновенным.

Если честно, вы могли бы сойти с рук "как" запросы на поле, которое вы ищете? Это может быть достаточно хорошо. Я думаю, вы обнаружите, что как только вы добавите индексы к своим данным, база данных действительно вырастет в размерах и может сделать ваше приложение довольно большим, а использование полноценной поисковой системы может стать настоящей болью.

Вот код, позволяющий быстро выполнить некоторые тесты для базы данных SQLite.

http://www.rvaidya.com/blog/iphone/2009/02/14/wrapper-classes-for-using-sqlite-on-iphonecocoa/

SQLiteResult *result = [SQLite query:@"SELECT * from test;"];
NSArray *row = [result.rows objectAtIndex:0];
NSString *firstValue = [row objectAtIndex:0];
0 голосов
/ 06 сентября 2010

Я понимаю, что Lucene написан на Java - это значит, что вы не можете использовать его на iPad.

Вы действительно создали индексы в своей базе данных Sqlite?По моему опыту Sqlite действительно довольно быстро.Если Core Data слишком медленный, вы также можете попробовать использовать собственный C API.

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