Я использую функцию автозаполнения в Google Suggest для поиска по тегам с помощью автозаполнения jQuery.
Мне нужно предоставить веб-сервис jQuery, предоставив ему список предложений на основе того, что набрал пользователь. Я вижу 2 способа реализации веб-сервиса:
1) просто сохраните все теги в базе данных и выполните поиск в базе данных, используя пользовательский ввод в качестве префикса. Это просто, но я беспокоюсь о задержке.
2) Используйте внутрипроцессное дерево для хранения всех тегов и поиска по ним соответствующих результатов. Поскольку все будет в процессе, я ожидаю, что это будет иметь намного меньшую задержку. Но есть несколько трудностей:
-Какой хороший способ инициализировать три при запуске процесса? Предположительно, я буду хранить данные тегов в БД, извлекать их и превращать в три, когда начну процесс. Но я не уверен как. Я использую Python / Django.
-Когда новый тег создается пользователем, мне нужно вставить новый тег в дерево. Но скажем, у меня 5 процессов Django и, следовательно, 5 попыток, как мне сказать другим 4 попыткам, что им тоже нужно вставить новый тег?
-Как убедиться, что этот файл является потокобезопасным, поскольку мои процессы Django будут потоковыми (я использую mod_wsgi). Или мне не нужно беспокоиться о threadsaty из-за GIL Python?
-Каким образом, я могу также хранить частоту использования тега внутри файла? Как узнать, когда заканчивается строка тега и когда начинается частота - например, если я храню apple213 в три, это «яблоко» с частотой 213 или это «apple2» с частотой 13 ??
Любая помощь по вышеуказанным вопросам или любые предложения по другому подходу будут очень благодарны.