SOLR многозначные поля - PullRequest
       36

SOLR многозначные поля

3 голосов
/ 08 января 2012

Сценарий:

У меня есть следующий (упрощенный) сценарий таблицы базы данных:

ID   ProductName          ProductCategory   Colour   Price
----------------------------------------------------------
1    BatmanTShirt         T-Shirt           Black    22
2    BatmanTShirt         T-Shirt           Blue     20
3    SupermanTShirt       T-Shirt           Blue     19
4    SpidermanTrousers    Trousers          Red      28
5    SpidermanTrousers    Trousers          Black    30

Мое желание:

В индексе SOLR мне бы хотелось, чтобы эти данные отображались нормализованным образом, чтобы вместо 5 создавались только 3 документа SOLR (как показано ниже).

<doc1>
  <ID>1</ID>
  <ProductName>BatmanTShirt</ProductName>
  <ProductCategory>T-Shirt</ProductCategory>
  <OtherDetails>{ {1, Black, 22}, {2, Blue, 20} }</OtherDetails>
</doc1>
<doc2>
  <ID>3</ID>
  <ProductName>SupermanTShirt</ProductName>
  <ProductCategory>T-Shirt</ProductCategory>
  <OtherDetails>{ {3, Blue, 19} }</OtherDetails>
</doc2>
<doc3>
  <ID>4</ID>
  <ProductName>SpidermanTrousers</ProductName>
  <ProductCategory>Trousers</ProductCategory>
  <OtherDetails>{ {4, Red, 28}, {5, black, 30} }</OtherDetails>
</doc3>

НекоторыеПримечания:

  • <ID> будет содержать минимальный идентификатор из группы
  • <OtherDetails> будет содержать уникальный идентификатор, а также другие данные, которые не учитываются при группировке.Это будет многозначное поле с типом данных List, содержащим другой список деталей {ID, Color, Price}.

Вопрос:

Anyoneзнает, как это возможно?

PS

Причина, по которой следует выполнить этот групповой ход, заключается в том, что я хочу обратить внимание на категорию продуктов.Если я использую фасетирование в ProductCategory, то в настоящее время генерируемые значения будут:

T-Shirt (3)
Trousers (2)

Теперь я хочу получить фасет в ProductCategory без данных о цвете и цене, чтобы у меня было только 2 футболки (один из Бэтмена и один из Супермена) и только 1 Брюки (Spiderman's).Поэтому я хочу показать следующее:

T-Shirt (2)
Trousers (1)

Я провел некоторое исследование и обнаружил, что в настоящее время эта функция (которая называется фасеткой после групп или счетчиками матриц) в настоящее время WIP, как отмечено в этот SOLR патч .Поэтому я хочу временный обходной путь, так как это может занять некоторое время.

1 Ответ

1 голос
/ 09 января 2012

Патч отлично работает для однозначных полей, поэтому лучше всего использовать этот патч и группировать.

Просто проиндексируйте данные, как они есть в базе данных, так что вам не нужно использовать многозначные поля.

Вы можете загрузить последний код с помощью TortoiseSVN и применить исправление. Построить WAR (или JAR) очень легко в Eclipse. Просто запустите новый проект с только что загруженным кодом и запустите сценарии ant в build.xml в корневом каталоге и в каталоге solr.

...