Я пытаюсь реализовать Графический поиск или пометку с помощью фильтрации с несколькими тегами. В фасетной навигации отображаются только непустые категории, а число элементов в категории, которые также соответствуют уже применяемым критериям, представлено в скобках.
Я могу получить все элементы, имеющие назначенные категории, используя INNER JOINs и получить количество элементов в все категории с использованием COUNT и GROUP BY, однако я не уверен, как он будет масштабироваться для миллионов объектов и тысяч тегов. Особенно счет.
Я знаю, что есть некоторые нереляционные решения, такие как Lucene + SOLR, но я обнаружил также некоторые RDBMS- которые, как говорят, являются силой предпринимательской деятельности, например FacetMap.com или Endeca, поэтому должен быть эффективный способ выполнения фасетного поиска в реляционных базах данных.
Есть ли у кого-нибудь опыт в гранжевом поиске и могут дать некоторые советы?
Вычислить подсчеты для каждого набора категорий? Может быть, использовать какой-то умный инкрементный метод, который будет обновлять счетчики?
Edit:
Пример фасетной навигации можно найти здесь: Flamenco.
В настоящее время у меня есть стандартная схема с тремя таблицами (элементы, теги и items_tags, как описано здесь: http://www.pui.ch/phred/archives/2005/04/tags-database-schemas.html#toxi) плюс таблица для фасеты. Каждому тегу присвоен грань.