Pull to refresh

AJAX поиск по облаку тегов с динамическим контекстнозависимым рейтингом. Прототип

Reading time2 min
Views791
Возникла идея в создании и реализации поисковой системы на основе
AJAX облака с контекстнозависимым рейтингом тегов. Возможное применение – доска объявлений с удобным поиском,
стимулирующее к вводу информативных сообщений.

image

Был создан прототип системы.

Особенности системы:

  • Поиск по набору тегов – система ищет данные, в которых имеются все указанные теги, что
    позволяет уточнять запрос.
  • Динамичное облако тегов – работает в режиме подсказки завершения слов при редактировании запроса,
    а так же в режиме подсказки тегов, которыми можно уточнить запрос при завершении ввода очередного слова.
  • Эмуляция локальной базы – при вводе запроса производится поиск в локальном массиве. Параллельно идёт запрос к серверу.
    Ответ от сервера расширяет локальный массив и результат поиска.
  • Графическая оценка релевантности

Созданный прототип реализует описанное поведение, но возникли проблемы,
которые не позволяют запустить проект в эксплуатацию.

Ниже дополнительная информация и ссылка на реализацию прототипа.

UPD Цель публикации — попытка сдвинуть остановившийся проект с мёртвой точки.
Возможно некоторые решения пригодятся читателям.


Клиентская сторона написана на Javascript, без использования сторонних библиотек,
что позволило добиться минимального размера (<8KB) и высокой скорости работы.

Основная проблема – производительность запросов к серверу.
На данный момент в базе около 500 тегов и уже наблюдается низкая скорость выполнения.
Самые медленные – определение рейтинга тегов в облаке для текущего запроса.
В запросе приходится для введенных тегов искать все посты, содержащие их,
из них отбирать оставшиеся теги и сортировать их по вхождению в текущем запросе.
Кэширование скорее всего применить не удастся – слишком много уникальных запросов.

Дополнительная проблема – оценка релевантности тегов.
На данный момент система не учитывает смысловую нагрузку тегов и их порядок в посте.
Это приводит к тому, что наиболее рейтинговыми получаются теги, не несущие смысла (союзы, предлоги).
Хотя усложнение алгоритма определение рейтинга приведёт к ещё большему падению производительности.

Исходный код — code.google.com/p/mytagdb/downloads/list
Онлайн прототип — www.ajax.idhost.kz/tag

В комментариях хотелось бы обсудить пути повышения производительности и улучшения релевантности выдачи.
Tags:
Hubs:
Total votes 14: ↑8 and ↓6+2
Comments11

Articles