2014-02-03 4 views
0

Я использую DIH для импорта различных полей из базы данных. Запрос SQL возвращает следующие данныеSolr DIH импортирует несколько значений для столбца

|COL1 | COL2 |COL3 |COL4 |COL5 |COL6 |COL7 |COL8 |COL9 |COL10 | 
    ------------------------------------------------------------------ 
    |val1 |val2 |val3 |val4 |val5 |val6 |val7 |val8 |val9 |multi-val1 | 
    |val1 |val2 |val3 |val4 |val5 |val6 |val7 |val8 |val9 |multi-val2 | 

<field name="Col10" type="int" indexed="true" stored="true" default="0" multiValued="true"/> 

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

Что нужно сделать, чтобы сохранить значение как многозначное/массивное?

Благодаря

+0

Привет, jsp, пожалуйста, вы можете объяснить вам db-data-import.xml? возможно, у вас есть какая-то ошибка – Dany

ответ

1

С другой стороны, SQL-запрос JSP-возвращает несколько значение, если col10 в несколько строк, так как уникальный идентификатор col1

|COL1 | COL2 |COL3 |COL4 |COL5 |COL6 |COL7 |COL8 |COL9 |COL10 | 
------------------------------------------------------------------ 
|val1 |val2 |val3 |val4 |val5 |val6 |val7 |val8 |val9 |multi-val1 | 
|val1 |val2 |val3 |val4 |val5 |val6 |val7 |val8 |val9 |multi-val2 | 

Возможно настроить SQL для получения следующего результата, а затем использовать RegexTransformer, как предложил Кевин.

|COL1 | COL2 |COL3 |COL4 |COL5 |COL6 |COL7 |COL8 |COL9 |COL10 | 
------------------------------------------------------------------ 
|val1 |val2 |val3 |val4 |val5 |val6 |val7 |val8 |val9 |multi-val1, multi-val2| 

Конечно, существует несколько способов собрать многозначное поле на основе DIH. Один альтернативный пример:

<entity name="cols" query="Select * From col1_9_table"> 
    <entity name="col10" query="Select col10 From col10_table 
           Where Id='${col1_9_table.Id}'"> 
    <field column="col10" name="col10"/> 
    </entity> 
</entity> 
1

Вы, вероятно, нужно использовать Transformer, чтобы получить больше значения из из Col10,

<entity name="foo" transformer="RegexTransformer" query="select ..."> 
    <field name="Col10" splitBy=","/> 
</entity> 
Смежные вопросы