Текущее состояние
- .NET 4.0 Application (WPF)
- База данных: SQLCE
- Таблицы (упрощенно): документы, теги, теги документов [n: n]
- примерно 2000 документов и 600 тегов (теги могут быть назначены нескольким документам)
- теги = ключевые слова = этикетки
Case
У пользователя есть большая база данных документов, которую он может фильтровать с помощью облака тегов. Теги отображают имя (само имя тега) и число, которое является общим количеством документов с соответствующим тегом.
Если пользователь выбирает тег, отображаются только документы с выбранным тегом. Облако динамических тегов теперь должно отображать только доступные теги в отфильтрованных документах с обновленным номером счета.
Задача
Это медленно. После каждого выбранного тега нам нужно снова оценить все документы для подсчета тегов. В настоящее время мы делаем это рекурсивно, поэтому проверяем каждый документ на наличие тегов. Мы ищем другое решение (кеширование, лучший алгоритм, ваша идея?).
Сходства
stackoverflow, del.icio.us также имеет облака тегов. Проверьте себя. Как они это делают? Я знаю, что хранимые процедуры были бы решением, но, по словам нашего разработчика базы данных, это не доступно в SQLCE.