Получение одного документа SOLR в нескольких группах / категориях, к которым он относится - PullRequest
0 голосов
/ 23 февраля 2012

Мы используем SOLR для индексации продуктов для приложения электронной коммерции, у нас есть продукты, сгруппированные по категориям и подкатегориям, и один и тот же продукт может отображаться в нескольких подкатегориях. Нам нужно получить продукты во всех подкатегориях, к которым он относится, и хотел бы использовать один запрос для достижения этой цели. Любые указатели были бы действительно полезны. Пример, показанный ниже -

Предположим, что продукт p1 принадлежит подкатегории sc1 и sc2, которая принадлежит родительской категории c1

c1 ----- sc1 ----- p1

c1 ----- sc2 ----- p1

То, как мы проиндексировали продукт, состоит в том, чтобы иметь информацию о пути к категории в продукте p1, p1 - ​​путь категории (c1-> sc1 и c1-> sc2)

Когда пользователь просматривает категорию c1, продукт должен появиться дважды на странице, сгруппированной по подкатегориям sc1 и sc2, как показано ниже

c1 ----- sc1

          p1

----- sc2
          p1

Мы хотим запросить у solr, чтобы он возвращал один и тот же продукт, сгруппированный в 2 разные подкатегории, эффективно дублируя результат. Мы могли бы сделать это программно после извлечения результата из solr, но у нас есть логика разбивки на страницы и порядок сортировки, которые было бы трудно поддерживать в коде.

Ответы [ 2 ]

1 голос
/ 23 февраля 2012

Это как теги. Вы знаете, что когда вы помечаете вещи, один элемент может иметь более одного тега. В SOLR вы представляете это как многозначное поле, то есть массив значений.

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

В этом случае вы можете иметь:

p1, [c1>sc1]
p2, [c1>sc2,c1>sc7]
p3, [c1>sc5]
p4, [c1>sc1,c1>sc5]

Когда вы получаете все продукты с соответствием подкатегории c1

0 голосов
/ 27 февраля 2012

Чтобы на самом деле вернуть продукт несколько раз, вам потребуется несколько записей в индексе Solr для этого продукта.Я подозреваю, что это затруднит обновление отдельных записей о продуктах - однако, если вы используете уникальный ключ, вам потребуется ключ, основанный как на идентификаторе продукта, так и на подкатегории.сделать «подкатегорию» многозначным полем и затем соответствующим образом отформатировать результаты.

...