2012-01-08 2 views
3

Сценарий:SOLR многозначного поля

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

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> будет содержать минимальный ID из группы
  • <OtherDetails> будет содержать уникальный идентификатор плюс других детали, которые остались вне при группировке. Это будет многозначное поле с типом данных списка, содержащий другой Список деталей {ID, Цвет, Цена}.

Вопрос:

Каждый знает, как это возможно?

P.S.

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

T-Shirt (3) 
Trousers (2) 

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

T-Shirt (2) 
Trousers (1) 

Я сделал некоторые исследования и выяснили, что эта функция (которая называется Post-Group Огранка или Matrix рассчитывает) в настоящее время WIP, как отмечено в this SOLR patch. Поэтому я хочу временное обходное решение, так как это может занять некоторое время.

ответ

1

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

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

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

+1

Спасибо O. Klein за ответ. Я успешно загрузил код с ToirtoiseSVN. В настоящее время я создаю его с помощью ANT, однако я бы хотел импортировать его в Eclipse, как вы упомянули, не могли бы вы дать мне некоторые сведения о том, как его импортировать и скомпилировать? Благодарю. – mrd3650

Смежные вопросы