Автозаполнение с помощью CouchDB и now.js

#javascript #html #node.js #autocomplete #couchdb

#javascript #HTML #node.js #автозаполнение #couchdb

Вопрос:

Я хотел бы включить автозаполнение для некоторых текстовых полей и на самом деле не знаю наилучшей стратегии. Все данные хранятся в CouchDB, и у меня есть несколько представлений, которые возвращают идентификатор и ключ с именами для автозаполнения. Я прочитал о решении start key и end key, и я хотел бы использовать это с now.js . Как бы это выглядело?

Является ли это правильным решением или мне лучше синхронизировать с redis или memcache? Или заполнить дерево списком? Или локальное хранилище HTMl5?

Данные используются на главной странице, поэтому они запрашиваются очень часто, но набор не очень большой, возможно, до 500 записей, меняется примерно раз в неделю.

Ответ №1:

500 записей, на мой взгляд, не слишком велики. Вы можете сделать это для начала: модуль автозаполнения YUI во внешнем интерфейсе. При загрузке страницы извлеките данные один раз с сервера через REST api и инициализируйте структуры данных автозаполнения для каждого из полей, нуждающихся в этом.

Для больших наборов данных вы все равно можете использовать виджет автозаполнения YUI, но данные будут поступать с сервера при каждом нажатии клавиши. На сервере вы можете предварительно создать троичный индекс на основе дерева поиска (раз в неделю) и обслуживать его с помощью веб-службы, принимая частично типизированную строку и возвращая фиксированный максимальный список совпадений в качестве выходных данных. Проверьте автозаполнение финансового символа на yahoo finance.

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

Ответ №2:

Я использовал now.js автозаполнение с помощью CouchDB Typeahead Search, и результаты были очень хорошими. Не хотел устанавливать другую библиотеку (YUI).