2015-03-13 7 views
1

Я хотел бы ускорить DIH для конфигурации Solr, которая имеет следующую структуру:Как ускорить SOLR DIH с подзапросами

  • объект пользователя (отображаются в таблицу пользователей)
  • объекта пользователя имеет 1 ..n значений, отображаемых в поле пользовательского объекта. поэтому n дополнительных полей
  • каждое поле собирается через подзапрос таблицы значений.

пример:

объект: пользователь (select * from user)

пользователь имеет следующие поля:

value_1: (select * from value where uid=user.id and category=1) 
value_2: (select * from value where uid=user.id and category=2) 
value_3: (select * from value where uid=user.id and category=3) 

Поскольку существует много подзапросов, импорт занимает слишком много времени.

Какой лучший подход к этому при использовании SOLR и DIH (MySQL)?

ответ

0

Я имел дело с этим точно таким же вопросом, и в душе проблема заключается в том, что ни MySQL, ни в Solr SQL DIH имеет встроенную емкость для использования поле значение, чтобы помочь имя столбец результатов MySQL или поле Solr.

В идеале вы можете сделать что-то вроде этого: ЭТО НЕ РАБОТАЕТ!

<entity name="value" query="select myfield, category from t1 where uid=${user.id}"> 
    <field column="myfield" name="value_${value.category}"> 
</entity> 

Без этого замечательного, несуществующей функции, есть несколько способов, чтобы получить аналогичную функциональность с меньшим удобством.

This page показывает большой анализ двух различных методов для создания этой функции, либо с ScriptTransformer (он нашел его простым в реализации, но он замедлился импорт плохо), или TemplateTransformer (который требует, чтобы собрать очень короткий Java сниппет, но, по-видимому гораздо более эффективным.

Опять же, this, скорее всего, решение, которое вы хотите.

В моем случае, я не нашел это решение, и вместо этого написал короткую программу на Java чтобы выполнить запросы SQL, создайте SolrInputDocument, а затем отправьте м в партиях до Solr. А потом все это стало неуместным, когда мы решили поместить все значения в Solr как одно поле, закодированное JSON.

Удачи вам!