поиск большого количества текста с использованием javascript и хранилища html5

У меня есть веб-приложение, которое использует функции автономного хранилища html5, чтобы пользователь мог получить к нему доступ без подключения к Интернету. Приложение, по сути, просто обслуживает html-страницы и немного css и javascript.

Я пытаюсь добавить возможность поиска текста на этих страницах по ключевым словам, но поскольку приложению не гарантируется доступ к серверу, оно должно иметь возможность выполнять эти поиски на стороне клиента.

Моя мысль заключается в том, что я могу хранить доступный для поиска текст в базе данных sql браузера и выполнять поиск либо через javascript, либо через sql API браузера. У меня есть несколько вопросов о том, как лучше всего это сделать:

1) Смутно помню статью о том, как реализовать что-то подобное, может от airbnb? Кто-нибудь помнит такую ​​статью?

2) Текст состоит из более чем 2 000 000 слов, поэтому я предполагаю, что indexOf сломается при таком размере данных. Есть ли шанс, что регулярное выражение выдержит? Какие есть варианты реализации реального поиска? (библиотеки, алгоритмы и т. д.) Любые предложения статей для понимания компромиссов алгоритмов поиска строк, если мне нужно идти по этому пути?


person Daniel Nill    schedule 13.06.2013    source источник


Ответы (1)


Что ж, я только что написал для вас быстрый тест и был удивлен, обнаружив, что вы, вероятно, сойдете с рук используя String.indexOf(). Я получаю около 35 мс на поиск, что составляет около 30 поисков в секунду.

EDIT: лучший тест. Кажется, есть какая-то задержка инициализации, но похоже, что indexOf работает довольно быстро. Вы можете поэкспериментировать с тестом и посмотреть, будет ли он работать на вас.

person nondefault    schedule 13.06.2013