Как получить общее количество каждого атрибута продукта / фильтра, например, newegg - PullRequest
1 голос
/ 19 ноября 2010

Если вы зайдете на newegg.com (только один пример), вы заметите, что при просмотре продуктов вы можете увидеть количество элементов рядом с каждым атрибутом продукта в левой боковой панели.

С таким количеством атрибутов в некоторых товарах и множеством различных конфигураций фильтров товаров, как они так быстро вычисляют все эти итоги?

Ответы [ 3 ]

2 голосов
/ 19 ноября 2010

Для newegg.com они используют технологию многогранной навигации, предоставленную endeca

В двух словах, endeca фактически использует данные, предоставленные в xml / csv, или напрямую извлекает данные из любой базы данных (не ограничиваясь только mysql), вычисляет сходство и группирует результат в свой собственный формат

Endeca не бесплатна, альтернатива с открытым исходным кодом, такая как sphinx или lucene solr

1 голос
/ 21 января 2011

Newegg использует Endeca, и они были, вероятно, одним из первых клиентов Endeca.Оглядываясь назад, Эндека могла бы внести большой вклад в их успех.Многогранная навигация очень хорошо работает на сложной электронике, такой как компьютерные компоненты.

При многогранной навигации есть несколько моментов, на которые следует обратить внимание:

1) Хотите ли вы просто многогранную навигацию по запросам на основе категорий илиВы также хотите, чтобы это работало на поиске?На самом деле, категории - это своего рода иерархический аспект.

2) Денормализованная модель обратного индекса Solr вызывает у вас проблемы?

Если ответ на 1) верен - этоВероятно, вам понадобятся некоторые перевернутые индексы.Инвертированные индексы - это практически единственный способ поиска по ключевым словам.Они также будут выполнять фасетирование с некоторыми оговорками.

По сути, вы можете рассматривать каждый фасет как инвертированный индекс (на самом деле поиск по ключевым словам может рассматриваться как специальный фасет с функциями ранжирования).Затем для подсчета необходимо пересечь / и текущий запрос и отфильтровать все остальные значения фасетов.Однако эта модель может привести к проблемам, если вам нужно представить разреженные наборы продуктов (см. 2).

Если ответ на 2) верен, это может помочь больше думать о гранях с точки зрения OLAP.Я не знаю, могут ли инвертированные индексы обрабатывать сложные отношения без каких-либо абстракций.

Справедливо рассматривать и реализовывать фасетный поиск / навигацию как смесь полных текстов (обычно реализуемых как инвертированный индекс) и / или OLAP.

Я почти уверен, что вы можете выполнить фасет с хранилищем столбцов, но вам все равно нужно иметь инвертированный индекс, чтобы объединиться с ним, если вы хотите искать по ключевым словам.

@ Дэн Гроссман:

Может показаться, что НО -

Задумывались ли вы на мгновение, сколько комбинаций есть граней?Вы не можете кэшировать так много страниц, как это.Вероятно, на Newegg.com больше комбинаций, чем звезд на вашем небе.

Добавьте несколько вариантов, и это даже хуже.Игра окончена.

Вы можете кэшировать только некоторые случаи, например, нефильтрованные и обычно отфильтрованные.Если вы попытаетесь создать паук Newegg.com без ограничения уровней рекурсии, вы убьете паука.По этой причине граненые сайты вызывают проблемы для поисковых систем в целом.См http://www.searchmarketingstandard.com/facets-navigational-seo-powerhouse-part

0 голосов
/ 19 ноября 2010

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

...